2013-03-26 6 views
1

fusesource 코드를 사용하여 Apollo 서버에 mqtt 메시지를 게시하는 데 문제가 있습니다. 나는 또한 주제에 가입 메시지 소비자를 쓴 다음메시지가 Apollo 서버에 보관되지 않음

connection.publish(topic, message.getBytes(),QoS.AT_LEAST_ONCE, true); 

같은 코드로 메시지 게시자를 썼다. 소비자를 먼저 시작한 다음 게시자를 시작하면 소비자는 모든 메시지를 올바르게 얻을 수 있습니다. 그러나 게시자를 먼저 시작한 다음 소비자를 시작하면 소비자는 메시지를받지 않습니다. 또한 아폴로 관리 콘솔에 들어가서 대기열에 메시지가 없습니다. (첨부 된 스크린 샷을 참조하십시오).

이 문제를 해결하려면 어떻게해야합니까? 나는 항상 내 소비자를 운영 할 수 없으며 게시자로부터 메시지를 잃고 싶지 않습니다. 소비자가 오프라인 일 때 중개인 (아폴로)이 모든 메시지를 보관해야하지 않습니까? 그렇다면 어떻게 볼 수 없습니까?

이것은 바보 같은 질문이지만 MQTT를 처음 접했고 약간의 도움이 필요합니다.

+0

어떤 Apollo 버전을 사용하고 있습니까? –

답변

0

메시지가 유지 된 것으로 표시 했으므로 버그 인 것 같습니다. 그러나 아폴로가 주제에 대해 여러 개의 보관 된 메시지를 처리하는 방법을 모르겠습니다. 자신의 메일 링리스트에 이것을 올려야 할 수도 있습니다.

+0

주제에 대해 보유 플래그가있는 마지막 메시지 만 유지됩니다. https://activemq.apache.org/apollo/documentation/mqtt-manual.html#Topic_Retained_Messages –

2

해당 주제에 연결된 생산자 또는 소비자가 없으면 해당 주제가 자동 삭제되고 있다고 생각됩니다. 자동 '기능'을 삭제하지 않으려면, apollo.xml에 virual_host 구성 요소에 다음과 같은 XML 요소를 추가 : 아폴로의

<topic auto_delete_after="0"/> 

향후 버전은 유지 메시지 APLO-319를 보유하는 경우 해당 항목을 삭제 방지 할 수 있습니다.