Docker容器内Apache Camel无法连接MQTT Broker问题求助
解决方案:Docker环境下Apache Camel连接MQTT(Mosquitto)失败问题
问题核心原因
本地运行Jar时,localhost:1884指向宿主机映射的MQTT端口;但Docker容器内的localhost是容器自身,无法访问到MQTT服务容器。同时默认Mosquitto可能仅绑定127.0.0.1,拒绝外部容器连接。
具体修复步骤
1. 修改Camel项目的MQTT连接地址
将代码中MQTT的连接URL从:
tcp://localhost:1884
替换为:
tcp://mqtt:1884
Docker Compose默认会创建内部网络,服务名mqtt可直接解析到对应容器的IP地址。
2. 配置Mosquitto允许外部连接
在你挂载的C:\\Users\\user\\temp\\mosquitto目录下创建mosquitto.conf文件,添加以下配置:
listener 1884 0.0.0.0 allow_anonymous true
listener 1884 0.0.0.0:让Mosquitto监听所有IP的1884端口,允许其他容器连接。allow_anonymous true:允许匿名访问(若需认证,可添加用户名密码配置)。
3. 重启Docker Compose服务
执行以下命令重新启动所有服务:
docker-compose down docker-compose up -d
验证方法
- 进入bridge-service容器,测试网络连通性:
若能ping通且telnet连接成功,说明网络配置正确。docker exec -it <bridge-service-container-name> ping mqtt docker exec -it <bridge-service-container-name> telnet mqtt 1884
内容的提问来源于stack exchange,提问作者mdanish98
相关产品推荐
相关产品推荐

