请问一下 emqx_connection_terminated, reason: {shutdown,takenover} 是什么原因

环境

  • EMQX 版本:5.0.20
  • 操作系统版本:ubuntu

重现此问题的步骤

  1. 多线程请求10-100个mqtt连接
  2. 会出现连接端口情况
  3. 错误日志:
    2023-06-12T03:53:20+00:00 [MQTT] 5dbc67c4698140a4a124ef58ca443bc9@115.21.50.7:16911 msg: mqtt_packet_received, packet: CONNECT(Q0, R0, D0, ClientId=5dbc67c4698140a4a124ef58ca443bc9, ProtoName=MQTT, ProtoVsn=4, CleanStart=false, KeepAlive=20, Username=undefined, Password=)
    2023-06-12T03:53:20+00:00 [AUTHN] 5dbc67c4698140a4a124ef58ca443bc9@115.236.11:16911 msg: authentication_result, reason: empty_chain, result: ignore
    2023-06-12T03:53:20+00:00 [SOCKET] 5dbc67c4698140a4a124ef58ca443bc9@115.236117:19075 msg: emqx_connection_terminated, reason: {shutdown,takenover}
    2023-06-12T03:53:20+00:00 [MQTT] 5dbc67c4698140a4a124ef58ca443bc9@115.236.11.7:16911 msg: mqtt_packet_sent, packet: CONNACK(Q0, R0, D0, AckFlags=1, ReasonCode=0)

预期行为

实际行为

使用同样的 ClientID 登录,如果客户端是保持会话的,新连接会”接管“ 老连接的会话,最后 emqx 会将老连接断开。

1 个赞

谢谢

官方,您好!请问,如果想让客户端保持会话,是不是必须得使用同样的ClientID登录呢?如果重连的时候,ClientID变化了,那么这个客户端本地缓存的消息,还能发出去吗?

是的,必须使用同样的 clientid