Qt MQTT를 사용하면 MQ Telemetry Transport (MQTT) 프로토콜을 통해 통신 할 수있는 애플리케이션을 작성할 수 있다.
Qt MQTT는 The Qt Company의 상용 또는 GPL v3라이센스에 따라 사용할 수 있다. 자세한 내용은 아래 링크를 참조.
게시 및 구독(Publish and Subscribe)
MQTT는 게시 및 구독 패턴으로 작동하는 시스템 간 연결 프로토콜이다. MQTT 클라이언트는 MQTT를 사용하여 브로커라고 부르는 MQTT 서버에 대한 네트워크 연결을 작성하는 프로그램 또는 장치다. 연결이 성립되면 클라이언트는 브로커에 메시지를 보낼 수 있다. 다른 클라이언트는 클라이언트가 보낸 특정 Topic에 대한 알림을 구독 할 수 있다.

예를 들어, 클라이언트 2가 주제(Topic) A의 메시지를 구독하면 클라이언트 1이 해당 주제(Topic)에 대한 메시지를 보낼 때 알림을받는다. 클라이언트 3이 주제(Topic) A와 주제 B를 구독하면 두 토픽 모두에 대한 메시지를 받을 수 있다.
Qt MQTT는 브로커를 포함하지 않는 클라이언트 솔루션이다. 임베디드 장치를 위한 원격 측정 어플리케이션 개발에 특히 적합하지만 Qt MQTT에는 외부 종속성이 없는대신 Qt 플랫폼에서만 실행될 수 있다.
주제(Topics)
토픽은 계층 적 트리 구조로 저장된다. 표준에서는 트리 설계 방법을 지정하지 않으며 사전 정의 된 계층 구조 세트를 제공하지도 않는다. 프로젝트에 필요한대로 계층 구조를 자유롭게 디자인 할 수 있다.
다음은 Topic 계층 구조의 예이다. 여기서 active는 모든 활성 센서를 의미하지만 house과 garage는 개별 센서이다.
sensors/active
sensors/house/temperature
sensors/house/bedroom/light
sensors/house/livingroom/light
sensors/garage/temperature
sensors/garage/light
와일드카드를 사용하여 Topic 구독(Subscribing to Topics Using Wildcards)
클라이언트가 토픽을 구독하면 해시 표시(#) 및 더하기 부호(+)를 와일드 카드로 사용할 수 있습니다. 해시 표시는 클라이언트가 토픽 및 하위 토픽의 모든 메시지에 대한 알림을 수신하려고 함을 나타낸다. 예를 들어, 클라이언트가 sensors/house/# 를 구독하면 house sensor의 모든 메시지를 수신한다.
더하기 부호는 일치하는 하위 토픽를 찾을 때 트리의 분기를 건너 뛸 수 있다. 예를 들어, 클라이언트가 sensors/+/temperature 를 구독하면 어떤 센서가 전송했는지에 관계없이 온도에 대한 메시지를받는다.
여러 개의 더하기 기호를 사용하여 여러 분기를 건너 뛸 수 있다. 예를 들어, house/+/+/temperature 는 house의 모든 객실의 온도에 대한 메시지를받는 데 사용될 수 있다.
Shared Subscriptions
공유되는 구독은 하나의 토픽 필터에 대한 구독자 풀을 설명한다. 모든 구독자가 메시지를받는 대신 한 명의 구독자 만 메시지를받는다.
이를 통해 여러 클라이언트에서 로드 밸런싱 조정이 가능하다. 공유 구독의 형식은 다음과 같다.
$share/{sharename}/{topicfilter}
예를 들어, 클라이언트 1과 클라이언트 2가 sensors/house/temperature 에 대한 구독을 공유해야하는 경우 구독 할 토픽 필터는 다음과 같다.
$share/poolAB/sensors/house/temperature
서버가 메시지를 분배하는 순서는 정의되어 있지 않다.