EMQ는 QoS 1/2 메시지를 어떻게 유지합니까?


10

EMQ (얼랑 MQTT 브로커) 보고 된 "130 만 개 동시 MQTT 연결"과 "분산, 대규모로 확장 할 수있는 확장 성이 뛰어난 MQTT 메시지 브로커"- 그것은 잠재적으로 많은 수의 클라이언트가 게시하고 가입 할 수 있도록. 일부 클라이언트는 언제든지 연결이 끊어 질 수 있습니다.

이 질문으로 모스키토에 QoS 1/2 메시지를 저장하기위한 메모리가 부족하면 어떻게됩니까? 모기에 대해 묻습니다.

MQTT에서 QoS 1 또는 2의 메시지는 적어도 한 번 전달 되어야합니다 (QoS 2 메시지는 정확히 한 번 전달되어야 함 ). 클라이언트가 연결되지 않은 경우 브로커는 클라이언트가 메시지를받을 준비가 될 때까지 메시지를 저장해야합니다.

그렇다면 EMQ 는 전달할 때까지 (예 : 브로커 재부팅 또는 메모리 제한과 관련하여) QoS 1/2 메시지를 어떻게 유지합니까?


답변:


6

그렇다면 EMQ는 전달할 때까지 (예 : 브로커 재부팅 또는 메모리 제한과 관련하여) QoS 1/2 메시지를 어떻게 유지합니까?

대답은 다음과 같습니다 : 그렇지 않습니다 . 버그 추적기 의이 문제 는 다음과 같이 말합니다.

브로커를 다시 시작한 후 영구 클라이언트 세션을 저장하는 데 문제가 있습니다. 이 기능이 현재 브로커에 없거나 일부 구성이 누락 되었습니까?

브로커는 세션을 지속하지 않습니다.

또한 몇 가지 문제를 더 조사한 결과이 보고서를 찾았습니다 .

처음에는 emqttd.config에서 최대 클라이언트를 1000K로 설정했습니다. 우리 컴퓨터에는 4 코어의 8GB 메모리가 있으며 120K 동시 연결을 쉽게 연결할 수 있지만 8GB 메모리를 초과하면 자체 종료됩니다. 내가 생각한 것은 컴퓨터 당 최대 클라이언트로 설정하는 것이 훨씬 나을 것입니다.

기본적으로 v2.0.5 기준 :

  • 메시지가 파일에 유지되지 않는 것 같습니다.
  • 브로커에 메모리가 부족하면 간단히 중단됩니다.

정확히 이상적이지는 않지만 현재의 행동 인 것 같습니다. 따라서 지속되는 메시지가 사용 사례에 중요한 경우 다른 브로커를 사용하십시오.


1
보인다 홀수 대규모 확장 MQTT 브로커 (최소 말한다)이다.
가니 마

LevelDB를 사용하여 디스크에 QoS 1/2 메시지를 유지하는 분산 MQTT 브로커를 찾고 있다면 VerneMQ ( vernemq.com )를 살펴보십시오 .
Lars Hesel Christensen

emqtt는 메시지 자체를 모두 저장하지는 않지만 여러 데이터베이스에 연결할 수 있으므로 그 기능이 있다고 가정합니다. 그거 확인 했어?
Fabien Papleux
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.