현재 EMQ (Erlang MQTT Broker) 는 디스크에 QoS 1/2 메시지를 유지하지 않는 것 같습니다 : EMQ는 QoS 1/2 메시지를 어떻게 유지합니까?
따라서 예기치 않은 서버 재부팅의 경우 QoS 1/2 레벨 메시지 를 적어도 한 번 또는 정확히 한 번 전달 해야 하지만 메모리 제한 또는 기타 이벤트 메시지가 손실 될 수 있습니다 .
디스크에 QoS 1/2 메시지를 유지하여 배달을 보장하는 MQTT 브로커가 있습니까?
현재 EMQ (Erlang MQTT Broker) 는 디스크에 QoS 1/2 메시지를 유지하지 않는 것 같습니다 : EMQ는 QoS 1/2 메시지를 어떻게 유지합니까?
따라서 예기치 않은 서버 재부팅의 경우 QoS 1/2 레벨 메시지 를 적어도 한 번 또는 정확히 한 번 전달 해야 하지만 메모리 제한 또는 기타 이벤트 메시지가 손실 될 수 있습니다 .
디스크에 QoS 1/2 메시지를 유지하여 배달을 보장하는 MQTT 브로커가 있습니까?
답변:
모스키토 는 메모리 내 메시지를 디스크에 저장 한다고 생각 합니다.
지속성 [true | false] true 인 경우 연결, 구독 및 메시지 데이터가 persistence_location에 의해 지정된 위치에서 mosquitto.db의 디스크에 기록됩니다. mosquitto가 다시 시작되면 mosquitto.db에 저장된 정보가 다시로드됩니다. 모기가 닫히거나 autosave_interval에 의해 정의 된주기 간격으로 데이터가 디스크에 기록됩니다. 모기에게 SIGUSR1 신호를 보내 지속성 데이터베이스의 쓰기를 강제 할 수도 있습니다. false 인 경우 데이터는 메모리에만 저장됩니다. 기본값은 false입니다.
VerneMQ 는 허용 된 QoS1 / 2 메시지가 디스크에 기록 될 때 (LevelDB 사용) MQTT 브로커의 예입니다. VerneMQ는 오픈 소스이며 클러스터링을 지원한다는 점에서 EMQ와 비슷합니다 (다른 기술을 사용하더라도). 전체 공개, 저는 VerneMQ 엔지니어입니다.