簡體   English   中英

無法通過MQTT經紀人在Lenses Kafka上接收數據

[英]Unable to receive data on the Lenses Kafka through the MQTT Broker

關於使用鏡頭卡夫卡,我有一個特別的問題。 沒有收到傳感器數據。

即,我嘗試使用Docker容器創建一個網絡連接,其中每個容器代表服務。 服務如下:

  1. 第一個是使用MQTT協議發送數據的傳感器(在這種情況下,是連接了傳感器的Raspberry Pi)
  2. MQTT Broker-在這種情況下為Mosquitto,用於獲取消息並與Lenses交互
  3. Lenses Kafka-在這種情況下用於Mosquitto與其他服務(例如另一端的InfluxDB)之間交互的系統

我可以肯定地說發送的數據已成功接收,因為我使用Apache JMeter來檢查從Mosquitto站點接收到的數據。 問題出現在鏡頭側,可以識別連接,但未接收到數據,並顯示以下錯誤:

MqttException (0) - java.net.NoRouteToHostException: Host is unreachable (Host unreachable) 
 at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
 at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:715)
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748) 
Caused by: java.net.NoRouteToHostException: Host is unreachable (Host unreachable)
 at java.net.PlainSocketImpl.socketConnect(Native Method)
 at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
 at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
 at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
 at java.net.Socket.connect(Socket.java:589) 
 at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:84)
 at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:701) 
... 7 more

鏡頭一側用來讀取數據的配置代碼為:

connector.class=com.datamountaineer.streamreactor.connect.mqtt.source.MqttSourceConnector
connect.mqtt.clean=true
connect.mqtt.timeout=1000
tasks.max=1
connect.mqtt.keep.alive=1000
name=Mosquitto
connect.mqtt.kcql=INSERT INTO kafka_sensor_data SELECT * FROM /sensor_data WITHCONVERTER=`com.datamountaineer.streamreactor.connect.converters.source.JsonSimpleConverter`
connect.mqtt.service.quality=1
connect.mqtt.client.id=dm_source_id
connect.mqtt.converter.throw.on.error=true
connect.mqtt.hosts=tcp://XXX:1883

(XXX僅出於安全目的,已經有經過測試的IP地址)。

這種方法實際上一直有效到最近,但是突然之間我現在變成了這個錯誤。 我檢查了連接和端口連接,但是那里的所有東西都在工作。 不太確定在哪里檢查了。

一段時間后,我設法找到了問題。

這是通過使用docker容器。 盡管該服務設法使端口和地址保持開放狀態並與外部網絡組織在一起,但由於Lenses無法識別MQTT Broker,所以內部存在一些問題。

配置了自己的網絡,而不是讓它創建為默認網絡后,我設法解決了這個問題。

暫無
暫無

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

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