공부/Protocol
Mqtt Subscribe
726582776982
2023. 4. 2. 15:29
문제 상황
mqtt Client 에서 subscribe를 수행하지 못하고 연결이 끊기는 상황 발생
발생 이유?
subscribe할 값을 확인 후 꺼내야 하는데, 바로 값을 꺼내고 비교 및 로직수행을 시도
해결 방안
subscribe할 값을 확인 후 꺼내어 비교 및 로직수행을 하도록 코드 수정
→ if (msgMap.containsKey(“workingdone”)
→ else if (msgMap.containsKey(“status”) 추가
String time = new Timestamp(System.currentTimeMillis()).toString();
System.out.println("Message Arrived at Time: " + time + " Topic: " + mqttTopic + " Message: "
+ new String(mqttMessage.getPayload()));
msgMap = convertMsg2Map(mqttMessage);
if (msgMap.containsKey("workingdone")) {
if(msgMap.get("workingdone").toString().equals("true")) {
robotId = mqttTopic.split("/")[1];
boolean workingdone = Boolean.parseBoolean(msgMap.get("workingdone").toString());
SendAmr2UI(robotId,workingdone);
}
}else if (msgMap.containsKey("status")) {
if (msgMap.get("status").toString().equals("Successunload")){
// unload 수행완료
//sendWaitPoint(siteId, pickingId, time, commandId, nodeName, "end");
}else if (msgMap.get("status").toString().equals("STOP")){
System.out.println("이동정지됨 리프트 다운 요청");
// Lift Down
// uiSender.sendWRSWorkingNext(time, "", robotId,
// "1200", "주문할당", "OrderAssign", "WRS/Tablet/OrderAssign.html",aSiteId,commandId);
}
}else
System.out.println("log error");