3.3. 네트워크 연결로 MQTT 사용
브로커는 MQTT v3.1.1 및 v5.0 (및 이전 v3.1 코드 메시지 형식)을 지원합니다. MQTT는 서버에 대한 경량 클라이언트, 게시/서브스크립션 메시징 프로토콜입니다. MQTT는 메시징 오버헤드 및 네트워크 트래픽뿐만 아니라 클라이언트의 코드 풋프린트를 줄입니다. 이러한 이유로 MQTT는 센서 및 액추에이터와 같은 제한된 장치에 가장 적합하며 IoT(사물 인터넷)의 사실상 표준 통신 프로토콜이 빠르게 증가하고 있습니다.
프로세스
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. - MQTT 프로토콜이 활성화된 어셉터를 추가합니다. 예를 들면 다음과 같습니다.
<acceptors> <acceptor name="mqtt">tcp://localhost:1883?protocols=MQTT</acceptor> ... </acceptors>
MQTT에는 다음과 같은 여러 유용한 기능이 포함되어 있습니다.
- 서비스 품질
- 각 메시지는 연결된 서비스 품질을 정의할 수 있습니다. 브로커는 정의된 최고 수준의 서비스 수준에서 구독자에게 메시지를 전달하려고 합니다.
- 보존된 메시지
메시지는 특정 주소에 대해 유지될 수 있습니다. 해당 주소에 대한 새 구독자는 클라이언트가 연결되기 전에 보존된 메시지가 전송되어도 다른 메시지보다 먼저 유지된 메시지를 수신합니다.
보존된 메시지는
sys.mqtt.<topic name
>라는 큐에 저장되며 클라이언트가 보존된 메시지를 삭제할 때까지 큐에 남아 있거나, 메시지가 만료될 때까지 만료가 구성될 때까지 큐에 남아 있습니다. 큐가 비어 있으면 명시적으로 삭제할 때까지 큐가 제거되지 않습니다. 예를 들어 다음 구성은 큐를 삭제합니다.<address-setting match="$sys.mqtt.retain.#"> <auto-delete-queues>true</auto-delete-queues> <auto-delete-addresses>true</auto-delete-addresses> </address-setting>
- 와일드카드 서브스크립션
- MQTT 주소는 파일 시스템의 계층 구조와 유사하게 계층 구조입니다. 클라이언트는 특정 주제 또는 계층 구조의 전체 분기를 구독할 수 있습니다.
- will Messages
- 클라이언트는 연결 패킷의 일부로 "will message"를 설정할 수 있습니다. 클라이언트가 비정상적으로 연결이 끊어지면 브로커는 will 메시지를 지정된 주소에 게시합니다. 다른 구독자는 해당 메시지를 수신하고 그에 따라 응답할 수 있습니다.
MQTT 프로토콜에 대한 자세한 내용은 사양을 참조하십시오.
3.3.1. MQTT 속성 구성
MQTT 수락자에 키-값 쌍을 추가하여 연결 속성을 구성할 수 있습니다. 예를 들면 다음과 같습니다.
<acceptors> <acceptor name="mqtt">tcp://localhost:1883?protocols=MQTT;receiveMaximum=50000;topicAliasMaximum=50000;maximumPacketSize;134217728; serverKeepAlive=30;closeMqttConnectionOnPublishAuthorizationFailure=false</acceptor> ... </acceptors>
- receiveMaximum
-
승인이 필요하기 전에 브로커가 클라이언트에서 수신할 수 있는 최대 QoS 1 및 2 메시지 수를 지정하여 흐름 제어를 활성화합니다. 기본값은
65535
입니다. 값-1
은 클라이언트에서 브로커로의 흐름 제어를 비활성화합니다. 이는 값을 0으로 설정하는 것과 동일하지만 CONNACK 패킷의 크기가 줄어듭니다. - topicAliasMaximum
-
클라이언트에 대해 브로커가 지원하는 최대 별칭 수를 지정합니다. 기본값은
65535
입니다. 값 -1을 사용하면 브로커가 클라이언트에 항목 별칭 제한을 알릴 수 없습니다. 이는 값을 0으로 설정하는 것과 동일하지만 CONNACK 패킷의 크기가 줄어듭니다. - maximumPacketSize
-
브로커가 클라이언트에서 허용할 수 있는 최대 패킷 크기를 지정합니다. 기본값은
268435455
입니다. 값 -1을 사용하면 브로커가 클라이언트에 최대 패킷 크기를 알릴 수 없으므로 들어오는 패킷 크기에 제한이 적용되지 않습니다. - serverKeepAlive
-
브로커가 비활성 클라이언트 연결을 열린 상태로 유지하는 기간을 지정합니다. 구성된 값은 클라이언트에 대해 구성된 keep-alive 값보다 작거나 클라이언트에 구성된 값이 0인 경우에만 연결에 적용됩니다. 기본값은
60
초입니다. 값-1
은 브로커가 항상 클라이언트의 활성 값을 허용합니다(해당 값이 0인 경우에도). - closeMqttConnectionOnPublishAuthorizationFailure
-
기본적으로 권한 부여 부족으로 인해 PUBLISH 패킷이 실패하면 브로커는 네트워크 연결을 종료합니다. 브로커가 네트워크 연결을 닫는 대신 긍정적인 승인을 보내려면
closeMqttConnectionOnPublishAuthorizationFailure
를false
로 설정합니다.