PUBLISH Publish 메시지

PUBLISH 메시지는 원하는 subscriber로 분배하기 위해 클라이언트가 브로커로 송신합니다. 각 PUBLISH 메시지는 토픽 이름(주제 또는 채널이라고도 함)과 연관되어 있습니다. Subscriber가 원하는 토픽을 등록할 수 있는 정보 소스의 종류를 정의하는 계층 구조 네임스페이스입니다. 특정 토픽 이름에 Publish된 메시지는 해당 토픽에 연결된 subscriber에게 전달됩니다.

클라이언트가 하나 이상의 토픽을 subscribe할 경우, 대칭을 유지보수하기 위해 이 토픽에 publish한 모든 메시지는 PUBLISH 메시지로서 브로커에 의해 클라이언트로 송신됩니다.

고정 헤더

다음 표에서는 고정된 헤더 형식을 보여줍니다.

비트 7 6 5 4 3 2 1 0
바이트 1 메시지 유형(3) DUP 플래그 QoS 레벨 RETAIN
  0 0 1 1 0 0 1 0
바이트 2 나머지 길이
QoS 레벨
1로 설정됩니다.
DUP 플래그
0으로 설정됩니다. 이는 메시지가 처음 송신됨을 의미합니다.

실패가 감지되어 다시 송신되는 QoS 레벨이 1 또는 2인 메시지의 경우, DUP 비트는 1로 설정됩니다. 메시지가 이미 수신된 중복 메시지임을 브로커에 알립니다. 브로커에 대한 이 정보의 중요성은 QoS 레벨에 달려 있습니다. DUP 비트는 QoS 레벨이 0인 메시지에는 사용되지 않습니다.

RETAIN 플래그
0으로 설정됩니다. 보유하지 않는다는 의미입니다.
나머지 길이 필드
가변 헤더의 길이에 페이로드(payload) 길이를 합한 길이. 다중 바이트 필드일 수 있습니다.

가변 헤더

가변 헤더에는 다음과 같은 필드가 포함되어 있습니다.

토픽 이름
UTF 인코딩 문자열
메시지 ID
QoS 레벨이 1 및 2인 메시지에 존재합니다.

일반적으로, 프로토콜 라이브러리는 메시지 ID를 생성하여 리턴 핸들로서 publish한 응용프로그램으로 다시 전달합니다. 이 접근 방법을 사용하면 다중 응용프로그램, 스레드 publish, 중복 메시지 ID를 생성하는 단일 클라이언트에서의 실행 위험성을 피할 수 있습니다.

메시지 ID는 QoS 레벨이 0인 메시지에 대한 가변 헤더에는 사용해서는 안됩니다.

메시지 ID는 16비트의 사인이 없는 정수로서, 일반적으로는 하나의 메시지에서 그 다음 메시지로 정확히 1씩 증가하지만, 반드시 그렇게 할 필요는 없습니다. 메시지 ID 중 2바이트의 순서는 MSB 다음에 LSB(Big Endian)입니다.

메시지 ID 0(즉, 0x0000)은 올바르지 않은 메시지 ID로서 예약되어 있으므로 사용해서는 안됩니다.

다음 표에는 PUBLISH 메시지의 가변 헤더 예가 표시되어 있습니다.

필드
토픽 이름: "a/b"
QoS 레벨 1
메시지 ID: 10

아래 표에는 이 경우에 해당하는 가변 헤더 형식이 표시되어 있습니다.

  설명 7 6 5 4 3 2 1 0
토픽 이름
바이트 1 길이 MSB (0) 0 0 0 0 0 0 0 0
바이트 2 길이 LSB (3) 0 0 0 0 0 0 1 1
바이트 3 'a' (0x61) 0 1 1 0 0 0 0 1
바이트 4 '/' (0x2F) 0 0 1 0 1 1 1 1
바이트 5 'b' (0x62) 0 1 1 0 0 0 1 0
메시지 ID
바이트 6 메시지 ID MSB (0) 0 0 0 0 0 0 0 0
바이트 7 메시지 ID LSB (10) 0 0 0 0 1 0 1 0

페이로드(Payload)

publish할 데이터를 포함합니다. 데이터의 컨텐츠 및 형식은 응용프로그램에 고유합니다. 고정된 헤더의 나머지 길이 필드는 가변 헤더 길이 및 페이로드(payload) 길이 모두를 포함합니다.

응답

PUBLISH 메시지에 대한 응답은 QoS 레벨에 따라 다릅니다. 아래 표에는 예상 응답이 표시되어 있습니다.

QoS 레벨 예상 응답
QoS 0 없음
QoS 1 PUBACK
QoS 2 PUBREC

조치

PUBLISH 메시지는 publisher에서 브로커로 송신되거나 브로커에서 subscriber로 송신될 수 있습니다. 수신인이 메시지를 수신할 때 취하는 조치는 메시지의 QoS 레벨에 따라 다릅니다.

QoS 0
원하는 상대가 메시지를 사용할 수 있게 합니다.
QoS 1
메시지를 지속 저장영역에 로그하여 모든 원하는 상대가 이를 사용할 수 있게 하며 송신자에게 PUBACK 메시지를 리턴합니다.
QoS 2
메시지를 지속 저장영역에 로그하나 아직 원하는 상대가 이를 사용하지 못하고 있으며 송신자에게 PUBACK 메시지를 리턴합니다.

브로커가 메시지를 수신하는 경우, 원하는 상대란 PUBLISH 메시지의 토픽에 대한 subscriber를 의미합니다. subscriber가 메시지를 수신하는 경우, 원하는 상대란 하나 이상의 토픽을 subscribe한 클라이언트의 응용프로그램을 의미하며 브로커로부터 메시지를 기다립니다.

주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac10970_