The documentation you are viewing is for Dapr v1.5 which is an older version of Dapr. For up-to-date documentation, see the latest version.
MQTT binding spec
配置
To setup MQTT binding create a component of type bindings.mqtt
. 请参阅本指南,了解如何创建和应用绑定配置。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
namespace: <NAMESPACE>
spec:
type: bindings.mqtt
version: v1
metadata:
- name: url
value: "tcp://[username][:password]@host.domain[:port]"
- name: topic
value: "mytopic"
- name: qos
value: 1
- name: retain
value: "false"
- name: cleanSession
value: "true"
- name: backOffMaxRetries
value: "0"
Warning
以上示例将密钥明文存储, 更推荐的方式是使用 Secret 组件, 这里。元数据字段规范
字段 | 必填 | 绑定支持 | 详情 | 示例 |
---|---|---|---|---|
url | Y | Input/Output | MQTT broker地址. 可以用secretKeyRef 来引用密钥。 Use the tcp:// URI scheme for non-TLS communication. Use the ssl:// URI scheme for TLS communication. |
"tcp://\[username\]\[:password\]@host.domain[:port]" |
topic | Y | Input/Output | The topic to listen on or send events to. | "mytopic" |
consumerID | N | Input/Output | The client ID used to connect to the MQTT broker. Defaults to the Dapr app ID. | "myMqttClientApp" |
qos | N | Input/Output | 表示消息的服务质量等级(QoS), 默认值 0 Defaults to 0 . |
1 |
retain | N | Input/Output | 定义消息是否被broker保存为指定主题的最后已知有效值 默认值为 "false" 默认值为 "false" . |
"true" , "false" |
cleanSession | N | Input/Output | Sets the clean_session flag in the connection message to the MQTT broker if "true" . Defaults to "true" . |
"true" , "false" |
caCert | 使用TLS时需要 | Input/Output | Certificate Authority (CA) certificate in PEM format for verifying server TLS certificates. | "-----BEGIN CERTIFICATE-----\n<base64-encoded DER>\n-----END CERTIFICATE-----" |
clientCert | 使用TLS时需要 | Input/Output | TLS client certificate in PEM format. Must be used with clientKey . |
"-----BEGIN CERTIFICATE-----\n<base64-encoded DER>\n-----END CERTIFICATE-----" |
clientKey | 使用TLS时需要 | Input/Output | TLS client key in PEM format. Must be used with clientCert . 可以用secretKeyRef 来引用密钥。 |
"-----BEGIN RSA PRIVATE KEY-----\n<base64-encoded PKCS8>\n-----END RSA PRIVATE KEY-----" |
backOffMaxRetries | N | 输入 | 返回错误前重试处理消息的最大次数。 Defaults to "0" , which means that no retries will be attempted. "-1" can be specified to indicate that messages should be retried indefinitely until they are successfully processed or the application is shutdown. The component will wait 5 seconds between retries. |
"3" |
使用 TLS 通信
To configure communication using TLS, ensure that the MQTT broker (e.g. mosquitto) is configured to support certificates and provide the caCert
, clientCert
, clientKey
metadata in the component configuration. 例如:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: mqtt-binding
namespace: default
spec:
type: bindings.mqtt
version: v1
metadata:
- name: url
value: "ssl://host.domain[:port]"
- name: topic
value: "topic1"
- name: qos
value: 1
- name: retain
value: "false"
- name: cleanSession
value: "false"
- name: backoffMaxRetries
value: "0"
- name: caCert
value: ${{ myLoadedCACert }}
- name: clientCert
value: ${{ myLoadedClientCert }}
- name: clientKey
secretKeyRef:
name: myMqttClientKey
key: myMqttClientKey
auth:
secretStore: <SECRET_STORE_NAME>
Note that while the caCert
and clientCert
values may not be secrets, they can be referenced from a Dapr secret store as well for convenience.
消费共享主题
当消费一个共享主题时,每个消费者必须有一个唯一的标识符。 By default, the application ID is used to uniquely identify each consumer and publisher. In self-hosted mode, invoking each dapr run
with a different application ID is sufficient to have them consume from the same shared topic. However, on Kubernetes, multiple instances of an application pod will share the same application ID, prohibiting all instances from consuming the same topic. To overcome this, configure the component’s consumerID
metadata with a {uuid}
tag, which will give each instance a randomly generated consumerID
value on start up. 例如:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: mqtt-binding
namespace: default
spec:
type: bindings.mqtt
version: v1
metadata:
- name: consumerID
value: "{uuid}"
- name: url
value: "tcp://admin:public@localhost:1883"
- name: topic
value: "topic1"
- name: qos
value: 1
- name: retain
value: "false"
- name: cleanSession
value: "false"
- name: backoffMaxRetries
value: "0"
Warning
以上示例将密钥明文存储, 更推荐的方式是使用 Secret 组件, 这里。绑定支持
此组件支持 输入和输出 绑定接口。
字段名为 ttlInSeconds
。
create
相关链接
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.