使用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"/>
当应用程序启动时,它只订阅一个主题。
我的配置有什么问题?也许我必须创建不同的客户?
提前致谢。
答案 0 :(得分:1)
确实,每mqtt:subscribe
只允许一个mqtt:config
,因此您需要:
mqtt:config
并在第二个mqtt:subscribe
choice
消息处理器根据mqtt.topicName
入站消息属性的值路由消息。后者将是更好的IMO,因为您只有一个活动连接,并且它利用MQTT的能力一次订阅多个主题。