Mule ESB和MQTT Connector:订阅多个主题

时间:2014-10-01 09:47:28

标签: mule mqtt

使用Mule和MQTT我无法为多个主题订阅客户端。

我以这种方式配置config global元素:

<mqtt:config name="mqttSubscriber" doc:name="MQTT" brokerServerUri="${mqtt.url}" clientId="#['spy@'+server.host]" password="${mqtt.username}" username="${mqtt.password}">
   <mqtt:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_WAIT" maxActive="1" maxIdle="1" maxWait="1"/>
</mqtt:config>

在我使用的流程中:

<mqtt:subscribe config-ref="mqttSubscriber" doc:name="MQTTSubscriber1" topicFilter="a" qos="ONLY_ONCE"/>

并在另一个流程中:

<mqtt:subscribe config-ref="mqttSubscriber" doc:name="MQTTSubscriber2" topicFilter="b" qos="ONLY_ONCE"/>

当应用程序启动时,它只订阅一个主题。

我的配置有什么问题?也许我必须创建不同的客户?

提前致谢。

1 个答案:

答案 0 :(得分:1)

确实,每mqtt:subscribe只允许一个mqtt:config,因此您需要:

  • 创建第二个mqtt:config并在第二个mqtt:subscribe
  • 中使用它
  • 创建single multi-filter subscription并使用choice消息处理器根据mqtt.topicName入站消息属性的值路由消息。

后者将是更好的IMO,因为您只有一个活动连接,并且它利用MQTT的能力一次订阅多个主题。