게시자와 브로커가 서로 다른 시스템에서 작동하고 있습니다. 게시자는 새로운 발신 메시지를 저장하는 로컬 DB를 가지고 있습니다. 게시자가 브로커와의 연결을 끊었을 때 게시자 로컬 DB와 브로커 DB (mosquitto.db)간에 동기화가 가능하며 브로커가 브로커에 연결되어 있거나 브로커에 연결되어 있으면 브로커가 자동으로 이러한 메시지를 구독자에게 보냅니다. 브로커.publisher db와 mosquitto broker db mqtt 간의 동기화
1
A
답변
0
mosquitto.db
스토어는 Mosquitto 브로커가 내부 상태를 유지하기위한 용도로만 사용됩니다. 여기에는 영구적 인 세션과 해당 클라이언트의 대기중인 메시지가 포함됩니다. 다른 곳에서는 액세스 할 수 없습니다.
게시자가 오프라인으로 전환 한 다음 메시지를 게시하려고 시도하면 예외가 발생합니다. 개발자가 예외를 잡아 내고 메시지를 저장 한 다음 나중에 게시자가 될 때 다시 보내야합니다. 브로커에 다시 연결되었습니다.
파호 클라이언트 콜백에는 메시지가 클라이언트의 제어를 벗어나면 호출되는 방법 (deliveryComplete())이 있습니다 (이것은 효과적으로 QOS 1 또는 2의 브로커에 도달했을 때 호출됩니다). 출판사에서 새로운 메시지를 로컬 데이터베이스
- 스토어 (또는 게시 표시) 데이터베이스 때부터 : 메시지를 보낼 때 다음 단계를 수행한다
deliveryComplete
이 호출됩니다.
브로커에 다시 연결할 때 데이터베이스는 해결되지 않은 메시지가 있는지 확인하고 게시해야합니다.