【问题标题】:Is it possible to disconnect old mqtt connection with same client Id in server side if new connection is came with same client Id?如果新连接带有相同的客户端 ID,是否可以在服务器端断开具有相同客户端 ID 的旧 mqtt 连接?
【发布时间】:2015-06-19 03:50:19
【问题描述】:

我正在使用通过 websocket 配置 mqtt 的 ActiveMQ 5.11.1。

如果新连接具有相同的客户端 ID,是否可以断开服务器端具有相同客户端 ID 的旧 mqtt 连接?

当我使用 hivemq websocket 尝试此方案时,我收到如下错误消息。

2015-06-18 20:03:06,074 | WARN | Transport Connection to: MQTTSocket_22078239 failed: java.io.IOException: Broker: localhost - Client: abc already connected from MQTTSocket_24236395 | org.apache.activemq.broker.TransportConnection.Transport | qtp20829588-40

【问题讨论】:

  • 这种类型的 mqtt 没有所谓的链接窃取吗?

标签: java websocket activemq mqtt hivemq


【解决方案1】:

对于 ActiveMQ 中的 WS 连接器,您需要启用 allowLinkStealing 选项

ws://0.0.0.0:61614?allowLinkStealing=true

对于普通的基于 MQTT 的传输连接器,这默认为打开,但因为 WS 传输连接器必须服务于多个协议连接(STOMP 和 MQTT),所以默认为关闭。

【讨论】:

  • 它不工作。即使第二个具有相同 clientId 的客户端连接,第一个 tcp/ip 连接仍然有效。jvm 1 | WARN | Stealing link for clientId abc From Connection Transport Conn ection to: MQTTSocket_12700349
  • 仅供参考,mosquittoemqttd 适用于这种情况。
  • 我怀疑 StackOverflow 上的错误报告会让您走得很远,建议您打开 ActiveMQ 项目的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 2021-10-10
  • 2013-05-27
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多