[英]How to prevent kafka to mqtt Apache Camel route from failures?
[英]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");
MQTT消息被轉換為JMS ByteMessage。 相反,任何JMS消息的主體都將轉換為字節緩沖區,作為MQTT消息的有效負載。
即使指定的端點是JMS,我也可以將mqtt消息發布到主題,應用處理器並以mqtt消息形式接收修改后的消息。
如果有人能想到任何可能的失敗,我將很高興收到您的來信。 我認為,這消除了將消息發布為MQTT的需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.