MQTT binding spec

Detailed documentation on the MQTT binding component

配置

To setup MQTT binding create a component of type bindings.mqtt. See this guide on how to create and apply a binding configuration.

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: <NAME>
  5. namespace: <NAMESPACE>
  6. spec:
  7. type: bindings.mqtt
  8. version: v1
  9. metadata:
  10. - name: url
  11. value: "tcp://[username][:password]@host.domain[:port]"
  12. - name: topic
  13. value: "topic1"
  14. - name: qos
  15. value: 1
  16. - name: retain
  17. value: "false"
  18. - name: cleanSession
  19. value: "false"

Warning

以上示例将密钥明文存储, It is recommended to use a secret store for the secrets as described here.

元数据字段规范

字段必填绑定支持详情Example
urlYInput/OutputMQTT broker地址非TLS通信: tcp://, TLS通信:tcps://。 Usessl:// scheme for TLS communication.
“tcp://[username][:password]@host.domain[:port]”
topicYInput/OutputThe topic to listen on or send events to“mytopic”
qosNInput/Output表示消息的服务质量等级(QoS), 默认值 0 默认值 01
retainNInput/Output定义消息是否被broker保存为指定主题的最后已知有效值 默认值为 “false” 默认值为 “false”“true”, “false”
cleanSessionNInput/Output将在客户端连接到MQTT broker时,在连接消息中设置 “clean session” 默认: “true” 默认: “true”“true”, “false”
caCert使用TLS时需要Input/Output授权, 可以用secretKeyRef来引用密钥。0123456789-0123456789
clientCert使用TLS时需要Input/Output客户端证书, 可以用secretKeyRef来引用密钥。0123456789-0123456789
clientKey使用TLS时需要Input/Output客户端键, 可以用secretKeyRef来引用密钥。012345

使用 TLS 通信

要配置使用 TLS 通信,需配置并确保mosquitto broker支持凭证。 前提条件包括certficate authority certificateca issued client certificateclient private key。 参见下面的示例。

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: mqtt-binding
  5. namespace: default
  6. spec:
  7. type: bindings.mqtt
  8. version: v1
  9. metadata:
  10. - name: url
  11. value: "ssl://host.domain[:port]"
  12. - name: topic
  13. value: "topic1"
  14. - name: qos
  15. value: 1
  16. - name: retain
  17. value: "false"
  18. - name: cleanSession
  19. value: "false"
  20. - name: caCert
  21. value: ''
  22. - name: clientCert
  23. value: ''
  24. - name: clientKey
  25. value: ''

消费共享主题

当消费一个共享主题时,每个消费者必须有一个唯一的标识符。 默认情况下,应用ID用于唯一标识每个消费者和发布者。 在自托管模式下,用不同的应用程序Id运行每个Dapr运行就足以让它们从同一个共享主题消费。 然而在Kubernetes上,一个有多个应用实例的pod共享同一个应用Id,这阻碍了所有实例消费同一个主题。 为了克服这个问题,请用{uuid}标签配置组件的ConsumerID元数据,使每个实例在启动时有一个随机生成的ConsumerID值。 例如:

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: messagebus
  5. namespace: default
  6. spec:
  7. type: bindings.mqtt
  8. version: v1
  9. metadata:
  10. - name: consumerID
  11. value: "{uuid}"
  12. - name: url
  13. value: "tcp://admin:public@localhost:1883"
  14. - name: topic
  15. value: "topic1"
  16. - name: qos
  17. value: 1
  18. - name: retain
  19. value: "false"
  20. - name: cleanSession
  21. value: "false"

Warning

以上示例将密钥明文存储, It is recommended to use a secret store for the secrets as described here.

绑定支持

此组件支持 输入和输出 绑定接口。

字段名为 ttlInSeconds

  • create

相关链接