为什么标头值没有插入到 Spring DSL 中路由的 Apache Camel 的"to"url 参数中?



我们有一个接受kafka的路由。KEY,并将其用作mqtt url参数,将数据发送到正确的主题。

<routes
xmlns="http://camel.apache.org/schema/spring">
<route id="KafkaToMQTT">
<from uri="kafka://mqtt?brokers=localhost:9092"/>
<to uri="micrometer:timer:camel.proxy.kafka.mqtt.stream?action=start"/>
<log message="Headers ${header.kafka.KEY}"/>
<to uri="mqtt:mqtt?host=tcp://localhost:1883&amp;publishTopicName=try${header.kafka.KEY}"/>
<to uri="log://camel.proxy?groupInterval=3&amp;level=INFO"/>
<to uri="micrometer:timer:camel.proxy.kafka.mqtt.stream?action=stop"/>      
</route>
</routes>

在日志消息中,我看到${header.kafka。KEY}正确,而在mqtt中,我得到的主题是字面上的try${header.kafka.KEY}

是什么原因,如何使标题在那里使用?

为避免使用右元素代替to,即toD

toD正确地连接url,因此正确的路由XML是:

<routes
xmlns="http://camel.apache.org/schema/spring">
<route id="KafkaToMQTT">
<from uri="kafka://mqtt?brokers=localhost:9092"/>
<to uri="micrometer:timer:camel.proxy.kafka.mqtt.stream?action=start"/>
<log message="Headers ${header.kafka.KEY}"/>
<toD uri="mqtt:mqtt?host=tcp://localhost:1883&amp;publishTopicName=ESP_02/try${header.kafka.KEY}"/>
<to uri="log://camel.proxy?groupInterval=3&amp;level=INFO"/>
<to uri="micrometer:timer:camel.proxy.kafka.mqtt.stream?action=stop"/>      
</route>
</routes>

相关内容

  • 没有找到相关文章

最新更新