공부/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");