0

我们有一个接受 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}

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

4

1 回答 1

1

为了避免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>
于 2021-10-18T10:25:29.910 回答