当前位置: 首页 > 知识库问答 >
问题:

本地MQTT代理的连接uri

严宇
2023-03-14

我目前有两个MQTT代理,它们都工作得很好。其中一个是我本地网络上的覆盆子派。另一个是托管在CloudMQTT上的远程代理。

目标是使两个代理彼此同步。当然,简单的解决方案是桥,但我遇到了一些困难,得到一个适当的桥设置。

据我所知,只有当你有一个静态IP和端口转发到Raspberry Pi时,你才能连接到你的本地网络,那么我如何才能绕过这个问题呢?两个代理需要保持一个永久的TCP连接打开,但是远程代理自己不能打开它。难道本地代理不可能打开这个连接吗?如果是,我如何让两个代理同步?

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d


connection CloudMQTT-Bridge

topic # both 2 local/testing remote/testing

bridge_protocol_version mqttv311

address m20:cloudmqtt.com:17001
remote_username jcw******
remote_password p-fO*****
remote_clientid RaspberryPiBroker

共有1个答案

濮丰
2023-03-14

您可以使用mosquitto创建桥接器,手册页的“配置桥接器”部分涵盖了所有选项,但您需要的基本知识是:

connection cloudMQ-Bridge
address m20.cloudmqtt.com
remote_username user
remote_password password
remote_clientid clientid
topic # in 2

棘手的地方是末尾的主题行,它控制主题如何在两个代理之间映射。必须小心不要创建循环

在本例中,所有主题都在QoS2下从远程代理映射到本地代理,而不进行任何主题重新映射。请仔细阅读手册中关于主题映射的部分,因为它很容易出错。

 类似资料:
  • 我是PHP领域的新手,在连接到MQTT时遇到了一些问题。 错误为:stream_socket_client():无法连接到TCP://...*:8083(连接超时) 在下面的代码中面临问题:

  • 我想使用ActiveMQ创建一个代理来连接到另一个蚊子代理。然后,我可以使用ActiveMQ接收来自蚊子代理的消息。 我现在要做的是: 将ActiveMQ与JBoss EAP 6.3集成。 在ActiveMQ中创建MQTT代理:http://activemq.apache.org/mqtt.html 但是,在我添加代理配置中的网络连接器之后.xml: 服务器启动后显示异常: "vm://local

  • 我试图使用Firebase的云函数使Dialogflow意图导致发布MQTT消息。我已经设法获得了我需要的数据,但我仍然无法完成的是: 建立到MQTT代理的连接; 发布到所述代理。 由于第二个需要前者,这还不是我关心的。

  • 我如何用C#将消息发布到外部托管的MQTT代理(在我的例子中是VirtualBox--在openwrt之上)?

  • 我在artemis代理中添加了一个mqtt拦截器,以便拦截mqtt客户端连接: 我的客户端apache paho通过这个端口“WS://0.0.0.0:61614”连接到代理。 我的问题是只截获发布到主题的消息。 为什么不截获连接消息?