검색

3.3. 네트워크 연결에서 MQTT 사용

download PDF

브로커는 MQTT v3.1.1 및 v5.0 (이전 v3.1 코드 메시지 형식도 지원)을 지원합니다. MQTT는 경량의 클라이언트, 서버, 게시/구독 메시징 프로토콜입니다. MQTT는 메시징 오버헤드 및 네트워크 트래픽과 클라이언트의 코드 풋프린트를 줄입니다. 이러한 이유로 MQTT는 센서 및 작동기와 같은 제한된 장치에 이상적으로 적합하며, IoT(Internet of Things)의 사실상 표준 통신 프로토콜이 빠르게 되고 있습니다.

절차

  1. &lt ;broker_instance_dir> /etc/broker.xml 구성 파일을 엽니다.
  2. MQTT 프로토콜이 활성화된 어셉터를 추가합니다. 예를 들면 다음과 같습니다.
<acceptors>
  <acceptor name="mqtt">tcp://localhost:1883?protocols=MQTT</acceptor>
  ...
</acceptors>

MQTT에는 다음과 같은 여러 유용한 기능이 제공됩니다.

QoS (Quality of Service)
각 메시지는 연결된 서비스 품질을 정의할 수 있습니다. 브로커는 정의된 최고 수준의 서비스 수준에서 구독자에게 메시지를 전달하려고 합니다.
보존 메시지

특정 주소에 대해 메시지를 유지할 수 있습니다. 클라이언트가 연결되기 전에 보존 메시지가 전송된 경우에도 해당 주소에 대한 새 구독자는 다른 메시지보다 마지막 메시지보다 마지막 메시지보다 먼저 메시지를 수신합니다.

보존 메시지는 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 주소는 파일 시스템의 계층 구조와 유사합니다. 클라이언트는 특정 주제 또는 계층의 전체 분기를 구독할 수 있습니다.
메시지 표시
클라이언트는 연결 패킷의 일부로 "메시지"를 설정할 수 있습니다. 클라이언트가 비정상적으로 연결이 끊어지면 브로커는 메시지를 지정된 주소에 게시합니다. 다른 가입자는 메시지를 수신하고 그에 따라 대응할 수 있습니다.

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 메시지 수를 지정하여 flow-control을 활성화합니다. 기본값은 65535 입니다. 값 -1 은 클라이언트에서 브로커로의 흐름 제어를 비활성화합니다. 이 값은 값을 0으로 설정하는 것과 동일하지만 CONNACK 패킷의 크기를 줄입니다.
topicAliasMaximum
클라이언트가 브로커가 지원하는 최대 별칭 수를 지정합니다. 기본값은 65535 입니다. 값 -1은 브로커가 주제 별칭 제한을 알릴 수 없습니다. 이 값은 값을 0으로 설정하는 것과 동일하지만 CONNACK 패킷의 크기를 줄입니다.
maximumPacketSize
브로커가 클라이언트에서 수락할 수 있는 최대 패킷 크기를 지정합니다. 기본값은 268435455 입니다. 값 -1은 브로커가 최대 패킷 크기를 알릴 수 없으므로 들어오는 패킷 크기에 제한이 적용되지 않습니다.
serverKeepAlive
브로커가 비활성 클라이언트 연결을 열린 상태로 유지하는 기간을 지정합니다. 구성된 값은 클라이언트에 대해 구성된 keep-alive 값보다 작거나 클라이언트에 대해 구성된 값이 0인 경우에만 연결에 적용됩니다. 기본값은 60 초입니다. 값 -1 은 브로커가 항상 클라이언트의 활성 값을 수락한다는 것을 의미합니다(해당 값이 0인 경우에도).
closeMqttConnectionOnPublishAuthorizationFailure
기본적으로 권한 부여 부족으로 인해 ECDHELISH 패킷이 실패하면 브로커는 네트워크 연결을 종료합니다. 브로커가 네트워크 연결을 닫는 대신 긍정적인 승인을 보내려면 closeMqttConnectionOnPublishAuthorizationFailurefalse 로 설정합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.