디스크에 QoS 1/2 메시지를 지속시키는 MQTT 브로커가 있습니까?


11

현재 EMQ (Erlang MQTT Broker) 는 디스크에 QoS 1/2 메시지를 유지하지 않는 것 같습니다 : EMQ는 QoS 1/2 메시지를 어떻게 유지합니까?

따라서 예기치 않은 서버 재부팅의 경우 QoS 1/2 레벨 메시지 를 적어도 한 번 또는 정확히 한 번 전달 해야 하지만 메모리 제한 또는 기타 이벤트 메시지가 손실 될 수 있습니다 .

디스크에 QoS 1/2 메시지를 유지하여 배달을 보장하는 MQTT 브로커가 있습니까?


답변:


8

모스키토 는 메모리 내 메시지를 디스크에 저장 한다고 생각 합니다.

지속성 [true | false] true 인 경우 연결, 구독 및 메시지 데이터가 persistence_location에 의해 지정된 위치에서 mosquitto.db의 디스크에 기록됩니다. mosquitto가 다시 시작되면 mosquitto.db에 저장된 정보가 다시로드됩니다. 모기가 닫히거나 autosave_interval에 의해 정의 된주기 간격으로 데이터가 디스크에 기록됩니다. 모기에게 SIGUSR1 신호를 보내 지속성 데이터베이스의 쓰기를 강제 할 수도 있습니다. false 인 경우 데이터는 메모리에만 저장됩니다. 기본값은 false입니다.


7

VerneMQ 는 허용 된 QoS1 / 2 메시지가 디스크에 기록 될 때 (LevelDB 사용) MQTT 브로커의 예입니다. VerneMQ는 오픈 소스이며 클러스터링을 지원한다는 점에서 EMQ와 비슷합니다 (다른 기술을 사용하더라도). 전체 공개, 저는 VerneMQ 엔지니어입니다.


사이드 질문 : 테스트 및 평가를 위해 공개 VerneMQ 브로커를 제공 했습니까?
Ross

1
@Ross 안녕하세요, public.vernemq.com:1883에서 실행중인 퍼블릭 인스턴스가 있지만 소규모 가상 머신에서 실행 중이므로로드 테스트를 수행 할 수 없으므로 성능이 매우 높을 것으로 기대하지 마십시오. . 또한 단일 IP에서 시작되는 동시 연결 수에 제한이 있습니다. 문의 해 주시면 사용 사례를 지원할 수 있는지 확인해 드리겠습니다. : 당신은 vernemq 닷컴에서 정보에서 우리를 작성하거나 여기에 문의 양식을 채울 수 vernemq.com/services.html
라스 Hesel 크리스텐슨

1
감사합니다.로드 테스트를 수행 할 필요가 없으며 다른 브로커에 연결할 수 있는지 확인하고 호환성 문제가 있는지 확인하기 만하면됩니다.
Ross

1
공개 버전이 비교적 오래되었다는 것을 상기시켜줍니다. 오늘 최신 버전으로 업그레이드 할 수 없는지 알게 될 것입니다.
Lars Hesel Christensen

5

HiveMQ 는 QoS 1/2 메시지를 포함하여 세션 데이터를 유지하기위한 다양한 옵션을 제공하는 것 같습니다.

지속성 옵션은 다음과 같습니다 .

  • 파일 지속성
  • 메모리 내 지속성

기본적으로 HiveMQ는 파일 지속성 을 사용하여 모든 데이터를 디스크에 저장하므로 언제든지 검색 할 수 있습니다.

브로커 재시작 사이의 데이터 일관성을 보장하기 위해 HiveMQ는 기본적으로 디스크 지속성을 사용합니다. 즉, 브로커가 중지되거나 충돌하더라도 모든 데이터가 보존되며 재시작 후 브로커는 아무 일도없는 것처럼 작업을 계속할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.