MQTT 소개

MQ 텔레메트리 전송을 사용하여 모바일 앱 간에 메시지를 전송하는 방법에 대해 학습하십시오 (MQTT). 이 프로토콜은 무선 및 저대역폭 네트워크에서 사용하기 위한 것입니다. MQTT 를 사용하는 모바일 애플리케이션은 MQTT 라이브러리를 호출하여 메시지를 보내고 받습니다. 메시지는 MQTT 메시징 서버를 통해 교환됩니다. MQTT 클라이언트 및 서버는 모바일 앱에 대한 메시지 전달의 복잡도를 안정적으로 처리하고 네트워크 관리 비용을 적게 유지합니다.

MQTT 애플리케이션은 모바일 디바이스 (예: 스마트폰 및 태블릿) 에서 실행됩니다. MQTT 는 센서에서 데이터를 수신하고 원격으로 제어하기 위한 텔레메트리에도 사용됩니다. 모바일 디바이스 및 센서의 경우 MQTT 는 전달이 보장된 확장성이 높은 발행/구독 프로토콜을 제공합니다. MQTT 메시지를 보내고 받기 위해 애플리케이션에 MQTT 클라이언트 라이브러리를 추가합니다.

MQTT 클라이언트 라이브러리는 작습니다. 라이브러리는 MQTT 서버에 연결된 다른 MQTT 애플리케이션과 함께 메시지를 보내고 받는 메일함 역할을 합니다. 응답을 기다리는 서버에 연결되어 있지 않고 메시지를 전송하여 MQTT 애플리케이션은 배터리 수명을 유지합니다. 라이브러리는 MQTT version 3.1 프로토콜을 실행 중인 MQTT 서버를 통해 다른 디바이스로 메시지를 보냅니다. 특정 클라이언트에 메시지를 송신하거나 발행/구독 메시징을 사용하여 다수의 디바이스에 연결할 수 있습니다.

MQTT 클라이언트 라이브러리는 MQTT 프로토콜을 사용하여 모바일 디바이스 및 센서용 애플리케이션을 MQTT 서버에 연결합니다.

IBM® MessageSightIBM WebSphere® MQMQTT 서버입니다. 많은 볼륨의 MQTT 클라이언트 애플리케이션을 연결할 수 있으며 MQTTIBM WebSphere MQ 네트워크를 함께 연결할 수 있습니다. MQTT 서버 시작하기를 참조하십시오. IBM WebSphere MQIBM MessageSight 는 모두 모바일 디바이스 및 센서에서 실행 중인 외부 웹 애플리케이션과 엔터프라이즈 내에서 실행 중인 기타 유형의 발행/구독 및 메시징 애플리케이션 간에 브릿지를 형성할 수 있습니다. 브릿지를 사용하면 모바일 디바이스와 센서를 통합하는 스마트 솔루션을 더 편리하게 빌드할 수 있습니다.

스마트 솔루션은 인터넷에서 사용 가능한 풍부한 정보를 모바일 및 센서 디바이스에서 실행 중인 애플리케이션에 제공합니다. 텔레메트리를 기반으로 하는 스마트 애플리케이션의 두 가지 예는 스마트 전기 및 스마트 건강 서비스입니다.

그림 1. 스마트 전기 계량
MQTT 메시지에서 서비스 제공자에게 전송되는 모든 집의 에너지 사용량 데이터 이미지 및 에너지 사용량 데이터의 분석을 기반으로 집으로 다시 전송되는 WebSphere MQ Telemetry 제어 명령입니다.
  • 서비스 제공자에게 전송된 에너지 사용 데이터를 포함하는 MQTT 메시지입니다.
  • 텔레메트리 애플리케이션은 에너지 사용량 데이터에 대한 분석을 기반으로 한 제어 명령을 송신합니다.
  • 자세한 정보는 텔레메트리 시나리오: 가정 에너지 모니터링 및 제어를 참조하십시오.
그림 2. 스마트 건강 모니터링
병원 또는 의사에게 전송되는 상태 데이터를 포함하고 메시지 경보 또는 피드백을 리턴하는 MQTT 메시지의 이미지입니다.
  • 텔레메트리 애플리케이션은 건강 데이터를 병원과 의사에게 송신합니다.
  • MQTT 메시지 경보 또는 피드백은 건강 데이터의 분석을 기반으로 보낼 수 있습니다.
  • 자세한 정보는 텔레메트리 시나리오: 가정 환자 모니터링을 참조하십시오.

MQTT protocol에 대한 사용자 고유의 앱을 작성하여 MQTT 를 소형 디바이스에 빌드할 수 있습니다. 이를 수행하는 데 도움이 되도록 IBMMQTT에서 실행되는 앱을 지원하는 클라이언트 라이브러리를 제공합니다. MQTT 클라이언트 시작하기를 참조하십시오. IBMiOS 앱 및 Android[V7.5.0.1 2013년 3월]에 대한 클라이언트 라이브러리와 플랫폼에 구애받지 않는 웹 앱에 대한 JavaScript 브라우저 클라이언트를 제공합니다. [V7.5.0.1 2013년 3월] JavaScript 클라이언트 페이지는 WebSockets를 통해 MQTT 프로토콜을 사용하여 IBM MessageSightIBM WebSphere MQ 에 연결합니다. IBM 에서는 Linux®Windows의 C및 Java 에 대한 MQTT 샘플 앱도 제공합니다.

C및 Java 라이브러리는 iOS, Android, Windows및 여러 UNIX and Linux 플랫폼에서 실행됩니다. MQTT 클라이언트 라이브러리의 C 소스 코드를 다른 플랫폼으로 이식할 수 있습니다. C및 JavaMQTT 클라이언트 라이브러리는 Eclipse Paho 프로젝트의 오픈 소스 라이센스와 함께 사용할 수 있습니다. Eclipse Paho의 내용을 참조하십시오. MQTT protocol 스펙은 열려 있으며 MQTT.org에서 사용 가능합니다.

MQTT protocol

MQTT protocol 는 클라이언트가 작다는 점에서 경량이며 네트워크 대역폭을 효율적으로 사용합니다. MQTT 프로토콜은 보장된 전달 및 전송 후 삭제 (fire-and-forget) 전송을 지원합니다. 이 프로토콜에서 메시지 전달은 애플리케이션에서 분리됩니다. 애플리케이션에서 디커플링의 범위는 MQTT 클라이언트 및 MQTT 서버가 작성되는 방법에 따라 다릅니다. 분리된 전달은 서버 연결에서 애플리케이션을 분리하고 메시지를 기다리지 않게 합니다. 상호작용 모델은 이메일과 비슷하지만 애플리케이션 프로그래밍에 맞게 최적화되어 있습니다.

MQTT V3.1 프로토콜이 공개됩니다. MQTT V3.1 프로토콜 스펙을 참조하십시오. 스펙은 프로토콜에 대한 다수의 구별되는 기능을 식별합니다.

  • 발행/구독 프로토콜입니다.
    • 일대다 메시지 분배를 제공하는 것 외에도 발행/구독은 애플리케이션을 분리합니다. 두 기능 모두 다수의 클라이언트가 있는 애플리케이션에서 유용합니다.
  • 메시지 컨텐츠에 종속되지 않습니다.
  • TCP/IP를 통해 실행되어 기본 네트워크 연결을 제공합니다.
  • 메시지 전달에 대한 세 가지 서비스 품질을 가지고 있습니다.
    많아야 한 번
    메시지는 기본 인터넷 프로토콜 네트워크의 최고 효율에 따라 전달됩니다. 메시지 유실이 발생할 수 있습니다.
    예를 들어, 통신하는 주위 센서 데이터와 함께 이 서비스 품질을 사용하십시오. 다음 수치가 곧 발행되는 경우에는 개별 수치가 유실되는지 여부는 중요하지 않습니다.
    적어도 한 번
    메시지는 확실히 도달하지만 중복이 발생할 수 있습니다.
    정확히 한 번
    메시지는 확실하게 정확히 한 번 도달합니다.
    예를 들어, 청구 시스템과 함께 이 서비스 품질을 사용하십시오. 메시지가 중복되거나 유실되면 불편하거나 잘못된 요금이 부과될 수 있습니다.
  • 네트워크에서 메시지 플로우를 관리하는 방식 면에서 경제적입니다. 예를 들어, 고정 길이 헤더의 길이는 2바이트이며 프로토콜 교환은 최소화되어 네트워크 트래픽을 줄입니다.
  • 여기에는 구독자에게 MQTT 서버로부터 클라이언트의 비정상적인 연결 끊기를 알리는 이상 종료 시 메시지 기능이 있습니다. 이상 종료 시 메시지 발행을 참조하십시오.

MQTT version 3.1IBM IBM WebSphere MQIBM MessageSight에서 지원됩니다. MQTT 는 TCP/IP를 통해 구현됩니다. 프로토콜의 다른 버전인 MQTT-S는 비TCP/IP 네트워크에 사용할 수 있습니다. MQTT-S version 1.2 스펙을 참조하십시오.

MQTT 커뮤니티

IBMIBM MessageSightIBM WebSphere MQ용 애플리케이션을 작성하는 MQTT 개발자를 위해 IBM Developer 메시징 커뮤니티 를 실행 중입니다.

MQTT.orgMQTT 프로토콜에 대한 구현 및 확장에 대해 학습하고 논의하기에 좋은 위치입니다.

MQTTEclipse 기술 프로젝트아래의 오픈 소스 Eclipse 프로젝트입니다. Paho 커뮤니티는 오픈 소스 클라이언트 및 서버를 개발하고 있습니다. Eclipse Paho의 내용을 참조하십시오.