SpringXD接收MQTT并在不同主题上发布到MQTT

时间:2015-10-28 09:51:21

标签: spring-integration mqtt spring-xd

我目前正在制作我的第一个SpringXD Stream。它应该收到有关MQTT主题的消息,对服务执行HTTP POST并将此结果发布到另一个MQTT主题上。

目前,我一直坚持发布与初始主题不同的MQTT主题。

这是我的信息流:

stream create test --definition "in:mqtt --url='tcp://hivemq:1883' --topics='+/+/+/my/downlink' --username='test' --password='test' --clientId='client_downlink' 
| header-enricher --headers={\"mqtt_topic\":\"headers['mqtt_topic'].replace('/downlink', '/uplink')\"} 
| out:mqtt --url='tcp://hivemq:1883' --username='test' --password='test' --clientId='client_uplink'" --deploy

方法是替换" /下行链路" by" / uplink"在标题' mqtt_topic'对于发布但是标题扩充器不会覆盖现有的标头值,因此发布的内容与我们收到消息的主题相同。

任何想法我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

我正在为此进行改进。同时,您可以编辑标题丰富的groovy脚本modules/processor/header-enricher/config/header-enricher.groovy并进行此更改:

si.'header'(name:k,expression:v,overwrite:true)