![](/img/trans.png)
[英]dockerized postgres and dockerized Spring boot app
[英]Connecting dockerized Spring boot app to MQTT Mosquitto broker
希望有人可以幫助我解決這個問題。
我有一個使用 docker 運行的應用程序,名為“my-app”。 它連接到也在 docker 容器中運行的 MQTT Mosquitto 代理。 這是 docker-compose 文件:
mosquitto:
container_name: mosquitto
image: eclipse-mosquitto:2.0.14
ports:
- 1883:1883
- 9001:9001
volumes:
- "./mosquitto/Broker.conf:/mosquitto/config/mosquitto.conf"
- "./mosquitto/Password:/mosquitto/config/mosquitto.passwd"
my-app:
container_name: my-app
image: data-provider:latest
ports:
- 8080:8080
depends_on:
- mosquitto
networks:
- my-app-network
我有一個代理的配置文件,其中包含以下內容:
listener 1883
password_file /mosquitto/config/mosquitto.passwd
allow_anonymous false
查看 mosquitto 容器日志文件,我可以看到它在運行 docker-compose 時啟動時沒有錯誤。
1658337045: mosquitto version 2.0.14 starting
1658337045: Config loaded from /mosquitto/config/mosquitto.conf.
1658337045: Opening ipv4 listen socket on port 1883.
1658337045: mosquitto version 2.0.14 running
但是,我的 Java 應用程序無法與 mosquitto 代理連接。 每當我嘗試發送要發布的消息時,都會收到以下錯誤:
Caused by: org.springframework.messaging.MessagingException: Failed to connect; nested exception is MqttException (0) - java.net.UnknownHostException: mosquitto
Java 代碼如下:
@Value("${mqtt.url}")
private String url;
@Bean
public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
MqttConnectOptions options = new MqttConnectOptions();
options.setServerURIs(new String[] { url });
...
...
return factory;
}
在屬性文件中:
mqtt.url = tcp://mosquitto:1883
如果我嘗試使用嵌入式 tomcat 服務器運行應用程序,並將 url 更改為 localhost:1883,那么一切都會正常工作:
1658338620: New connection from <ip>:59730 on port 1883.
1658338621: New client connected from <ip>:59730 as my-app.topic (p2, c1, k60, u'admin').
我認為我沒有以正確的方式公開 docker 主機容器 URL,但我嘗試了一些配置但沒有成功。 有誰知道我做錯了什么以及我需要在代理配置中更改什么?
PS:我正在使用 spring-integration-mqtt 5.5.10
提前致謝!
目前,您的mosquitto
服務位於 Bridge 網絡上,而my-app
位於my-app-network
。 因此,他們無法互相交談。 您需要將這兩種服務都放在一個網絡下。
mosquitto:
container_name: mosquitto
image: eclipse-mosquitto:2.0.14
ports:
- 1883:1883
- 9001:9001
volumes:
- "./mosquitto/Broker.conf:/mosquitto/config/mosquitto.conf"
- "./mosquitto/Password:/mosquitto/config/mosquitto.passwd"
networks:
- my-app-network
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.