MqttClient 를 이용할 때에 외부 Service(다른 Service객체) 에서 해당 Client에 존재하는 Publish를 호출할 때에는 에러가 발생하지 않으나,
내부적으로 (feedback 개념) 받은 Subscribe로 받은내용을 내부의 다른메소드로 publish를 호출하게 되면 32000번 에러가 발생.
원인
SetCallback내에서 Qos 0을 호출하여 Client내에서 제한시간 초과 발생 메시지 내용이 유실됨.그러나 메시지 발송은 성공함.
따라서 Qos 1로 변환후 publish 예정
publish와 subscribe를 구분하여도 동일한 문제가 발생하여 Qos변경을 결정
Broker 구축 계획해야함.(inbound , outbound를 구분함으로써 subscribe - inbound, publish - outbound 로 활용)
참조 : https://github.com/eclipse/paho.mqtt.java/pull/315
참조 : https://github.com/eclipse/paho.mqtt.java - README
에러 본문 -
[2022-10-23 14:39:50.003] INFO [main][c.t.ConsoleRunner] running......ApplicationRunner : com.thirarobotics.ConsoleRunner
WRS > {"ping":1234}
{"pong":"12341", "robotId":"robo_l_v2_01"}
32000
서버에서 응답을 기다리는 중 제한시간 초과 (32000)
at org.eclipse.paho.client.mqttv3.internal.Token.waitForCompletion(Token.java:112)
at org.eclipse.paho.client.mqttv3.MqttToken.waitForCompletion(MqttToken.java:67)
at org.eclipse.paho.client.mqttv3.MqttClient.publish(MqttClient.java:570)
at com.thirarobotics.work.wrs.amr.MqttSerivceImpl.publishMessage(MqttSerivceImpl.java:165)
at com.thirarobotics.work.wrs.amr.MqttPublish.sendPong(MqttPublish.java:19)
at com.thirarobotics.work.wrs.amr.MqttSerivceImpl.messageArrived(MqttSerivceImpl.java:248)
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:519)
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:417)
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:214)
at java.lang.Thread.run(Thread.java:748)
[2022-10-23 14:40:46.636] INFO [MessageBroker-1][o.s.w.s.c.WebSocketMessageBrokerStats] WebSocketSession[0 current WS(0)-HttpStream(0)-HttpPoll(0), 0 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(0)-CONNECTED(0)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], outboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], sockJsScheduler[pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 0]
[2022-10-23 14:41:28.764] INFO [RMI TCP Connection(2)-127.0.0.1][o.s.b.a.SpringApplicationAdminMXBeanRegistrar$SpringApplicationAdmin] Application shutdown requested.
'공부 > Protocol' 카테고리의 다른 글
mqtt_logging (0) | 2023.04.02 |
---|---|
Mqtt Subscribe (0) | 2023.04.02 |
Mqtt Client in Thread Pool to java (0) | 2023.04.02 |
PM2 사용법 (0) | 2023.04.02 |