使用的centos7部署的5.10,qos为2
后台显示消息已被消费,实际在程序中并未打印,使用MQTTX测试也是这个效果
你可以开emqx的debug日志看看
{
“time”: “2025-07-01T08:59:40.871785+08:00”,
“msg”: “mqtt_packet_received”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “MQTT”,
“peername”: “202.105.184.106:65120”,
“packet”: “CONNECT(Q0, R0, D0, ClientId=transfer_server_client_01, ProtoName=MQTT, ProtoVsn=4, CleanStart=false, KeepAlive=30, Username=desay_test_tms_us, Password=******)”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.872022+08:00”,
“msg”: “no_tenant_namespace”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “MULTI_TENANCY”,
“peername”: “202.105.184.106:65120”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.872139+08:00”,
“msg”: “authentication_result”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “AUTHN”,
“result”: “{ok,ok}”,
“reason”: “no_chain”,
“peername”: “202.105.184.106:65120”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.872403+08:00”,
“msg”: “subscribe”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “SUBSCRIBE”,
“topic”: “/ds/mn/+/+”,
“sub_opts”: {
“sub_props”: {},
“rh”: 0,
“rap”: 0,
“qos”: 2,
“nl”: 0
},
“sub_id”: “transfer_server_client_01”,
“peername”: “202.105.184.106:65120”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.872731+08:00”,
“msg”: “mqtt_packet_sent”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “MQTT”,
“peername”: “202.105.184.106:65120”,
“packet”: “CONNACK(Q0, R0, D0, AckFlags=1, ReasonCode=0)”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.872881+08:00”,
“msg”: “unsubscribe”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “UNSUBSCRIBE”,
“topic”: “/ds/mn/+/+”,
“sub_opts”: {
“subid”: “transfer_server_client_01”,
“sub_props”: {},
“rh”: 0,
“rap”: 0,
“qos”: 2,
“nl”: 0
},
“peername”: “202.105.184.106:65032”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.872955+08:00”,
“msg”: “emqx_connection_terminated”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “SOCKET”,
“reason”: “{shutdown,takenover}”,
“peername”: “202.105.184.106:65032”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.873043+08:00”,
“msg”: “mqtt_packet_sent”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “MQTT”,
“peername”: “202.105.184.106:65120”,
“packet”: “PUBLISH(Q2, R0, D0, Topic=/ds/mn/123/test-record, PacketId=1, Payload(text)={\n "microneedleNO": "123",\n "testResult": "Pass",\n "modelName": "18SDebug",\n "lineNO": "L123",\n "workstationNO": "Matting",\n "channelNO": "1",\n "testerID": "Tester123",\n "testNGCode": "",\n "testTime": "2025-06-30 18:15:22",\n "hostID": "Matting_Log"\n}\n\n)”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.893157+08:00”,
“msg”: “mqtt_packet_received”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “MQTT”,
“peername”: “202.105.184.106:65120”,
“packet”: “SUBSCRIBE(Q1, R0, D0, PacketId=1 TopicFilters=[/ds/mn/+/+(#{nl => 0,qos => 2,rap => 0,rh => 0})])”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.893369+08:00”,
“msg”: “authorization_module_ignore”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “AUTHZ”,
“topic”: “/ds/mn/+/+”,
“peername”: “202.105.184.106:65120”,
“module”: “emqx_authz_client_info”,
“clientid”: “transfer_server_client_01”,
“authorize_type”: “client_info”,
“action”: “SUBSCRIBE(Q2)”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.893481+08:00”,
“msg”: “authorization_matched_allow”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “AUTHZ”,
“topic”: “/ds/mn/+/+”,
“peername”: “202.105.184.106:65120”,
“module”: “emqx_authz_file”,
“clientid”: “transfer_server_client_01”,
“authorize_type”: “file”,
“action”: “SUBSCRIBE(Q2)”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.893562+08:00”,
“msg”: “subscribe”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “SUBSCRIBE”,
“topic”: “/ds/mn/+/+”,
“sub_opts”: {
“sub_props”: {},
“rh”: 0,
“rap”: 0,
“qos”: 2,
“nl”: 0
},
“sub_id”: “transfer_server_client_01”,
“peername”: “202.105.184.106:65120”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:40.893681+08:00”,
“msg”: “mqtt_packet_sent”,
“meta”: {
“username”: “desay_test_tms_us”,
“trace_tag”: “MQTT”,
“peername”: “202.105.184.106:65120”,
“packet”: “SUBACK(Q0, R0, D0, PacketId=1, ReasonCodes=[2])”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
{
“time”: “2025-07-01T08:59:46.249338+08:00”,
“msg”: “trace_stopping”,
“meta”: {
“trace_tag”: “API”,
“clientid”: “transfer_server_client_01”
},
“level”: “debug”
}
找到问题了,这应该是属于设计缺陷,在建立连接后,消息就被投递,没有匹配到订阅所以丢失了,必须设置SetDefaultPublishHandler才能去处理这些断网后的消息