簡體   English   中英

駱駝和MQTT路線

[英]Camel and MQTT Route

我正在做一個項目,因此決定使用Camel和ActiveMQ。 我正在嘗試使用Java和MQTT端點創建路由。 在這條路線中,我還合並了一個處理器。 這是我的路線:

from("mqtt:test?subscribeTopicName=zaq.avila.send")
            //.process(new RestProcessor())
            .to("mqtt:test?publishTopicName=zaq.avila.receive");

據我了解,路由從zaq / avila / send中消耗掉,應用了處理器,然后將消息發布到zaq / avila / receive。 to()部分似乎沒有發生,當我檢查控制台時,盡管沒有消息發布到zaq / avila / receive,但我看到處理器已執行。 另外,在Web控制台中,即使我僅偽裝一條消息,我也看到zaq / avila / send中的消息以排隊和出隊方式遞增。 另外,如果我關閉ActiveMQ,則會得到以下信息:

 INFO | Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 7 seconds.

也:

  WARN | Error occurred while shutting down service: Endpoint[mqtt://test?publish
 TopicName=zaq.avila.receive]. This exception will be ignored.
 java.lang.NullPointerException

這些異常使我想知道交換未完成且缺少某些內容。 我需要幫助!

查看Camel MQTT組件文檔 需要注意的是,如果我理解正確的話,該組件只能用於消費消息。

Note: The component currently only supports polling (consuming) feeds.

這很奇怪。 我會進一步調查。

這不一定是最好的答案,但是,它可以工作。

from("mqtt:test?subscribeTopicName=zaq.avila.send")
        .process(new RestProcessor())
        .to("jms:topic:zaq.avila.receive");

根據ActiveMQ Doc

MQTT消息被轉換為JMS ByteMessage。 相反,任何JMS消息的主體都將轉換為字節緩沖區,作為MQTT消息的有效負載。

即使指定的端點是JMS,我也可以將mqtt消息發布到主題,應用處理器並以mqtt消息形式接收修改后的消息。

如果有人能想到任何可能的失敗,我將很高興收到您的來信。 我認為,這消除了將消息發布為MQTT的需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM