MQTT 탄생과 주제를 구독합니까? (emqttd)


11

emqttd ( emqtt.io )를 실행 중 입니다. 출생 및 유언장 메시지가 게시되는 시스템 주제를 구독하는 별도의 프로세스에서 연결 및 연결 해제하는 클라이언트를 모니터링하고 싶습니다. 그렇게하는 올바른 방법은 무엇입니까?


3
IoT SE에 오신 것을 환영합니다. 설정에 대해 좀 더 자세히 설명해 주시겠습니까? emqttd를 어떤 컴퓨터에서 어떤 버전으로 실행하고 있습니까?
Helmar

답변:


5

출생 및 유언장 메시지가 게시되는 시스템 주제를 구독하는 별도의 프로세스에서 연결 및 연결 해제하는 클라이언트를 모니터링하고 싶습니다.

emqtt의 사용 설명서 는 일부 브로커 통계, 즉 $SYS/brokers/${node}/stats/clients/count현재 연결된 클라이언트 수를 제공 하는 시스템 주제를 보여줍니다 . 여기에는 연결된 클라이언트에 대한 구체적인 내용이 표시되지 않으므로 여기서는 필요하지 않은 것으로 생각합니다.

Last will (LWT, Last Will and Testament) 메시지는 시스템 토픽이 아니라 연결 중에 클라이언트가 설정 한 일반 토픽입니다. 해당 주제를 모니터링하려면 해당 주제를 구독하십시오. 그러나 클라이언트가 DISCONNECT 메시지를 보내어 정상적으로 연결을 끊으면 LWT 메시지가 삭제됩니다 ( hiveMQ 블로그 , btw 참조).

emqtt의 사용 설명서 는 클라이언트 연결 및 연결 해제를 모니터링하는 더 좋은 방법을 제공합니다.

./bin/emqttd_ctl명령 줄은 쿼리 및 [관리] EMQ 브로커 (Windows에서 작동하지 않습니다)에 사용될 수있다.

모니터링 clients list-모든 MQTT 클라이언트 나열 및 clients show <ClientId>MQTT 클라이언트 표시-가 여기에서 가장 도움이된다고 생각합니다. 따라서 클라이언트를 모니터링하기 위해 계획된 별도의 프로세스는 브로커를 구독 할 필요가없고 ./bin/emqttd_ctl대신 활용하면 됩니다.

    $ ./bin/emqttd_ctl clients list
    Client(mosqsub/43832-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64896, connected_at=1452929113)
    Client(mosqsub/44011-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64961, connected_at=1452929275)

매우 유용한. 시간 내 주셔서 감사합니다. emqttd_ctl은 부분적인 솔루션을 제공 할 수 있지만, 우리가 사용할 수있는 pubsub가 있으면 해당 메커니즘을 사용하여 경고를 생성 할 수 있기를 바랍니다. 클라이언트가 출생 및 메시지를 게시하도록 요구하여 여전히 시행 할 수있는 것 같습니다.
Fabien Papleux

1

글쎄, 출생 메시지와 LWT (Last Will and Testament)는 사양에 따라 선택 사항입니다. 따라서 브로커가 이러한 요구 사항에 맞게 사용자 정의하지 않은 경우 반드시 메시지를받지 않아도됩니다.


LWT는 연결이 끊긴 클라이언트를 대신하여 작동하는 브로커입니다. 브로커에 대해 선택적이 아닌 구현. 클라이언트가 마지막 유언 주제를 설정하는 것은 선택 사항입니다.
가니 마

그것이 제가 의미 한 바입니다. 클라이언트는 연결 패킷의 일부로 보낼 수 없습니다.
cogitoergosum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.