PUBLISH - Publish メッセージ

PUBLISH メッセージは、関係するサブスクライバーへの配布のために、クライアントからブローカーに送信されます。 各メッセージは、トピック名 (サブジェクトやチャネルともいう) に関連付けられます。 これは、サブスクライバーが関係する対象を登録する情報源の分類について定義した、階層的なネーム・スペースです。 特定のトピック名にパブリッシュされたメッセージは、そのトピック用の接続されたサブスクライバーに送達されます。

均衡を保つために、クライアントが 1 つ以上のトピックにサブスクライブしたら、それらのトピックに対してパブリッシュされるメッセージは、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 フラグ
ゼロに設定されます。 これは、保存されないということです。
残りの長さフィールド
変数ヘッダーの長さに、ペイロードの長さを加えたものです。 これは、マルチバイト・フィールドの場合もあります。

変数ヘッダー

変数ヘッダーには、以下のフィールドが含まれています。

トピック名
UTF エンコード・ストリング。
メッセージ ID
QoS レベル 1 および QoS レベル 2 のメッセージ用に存在しています。

メッセージ ID を生成し、パブリッシュしたアプリケーションに戻りハンドルとして戻されるような場合、これは一般にはプロトコル・ライブラリーの役割です。 このような方法により、1 つのクライアントで実行している複数のアプリケーションまたは複数のパブリッシュ・スレッドによって、重複したメッセージ ID が生成される危険を回避できます。

QoS レベル 0 のメッセージの変数ヘッダーではメッセージ ID を使用しないでください。

メッセージ ID は 16 ビットの符号なし整数です。 通常は大きくなっていきますが、あるメッセージから別のメッセージへと 1 つずつ大きくすることは求められていません。 メッセージ ID の 2 バイトの順序は、まず MSB、その後で LSB になります (ビッグ・エンディアン)。

メッセージ ID 0 (つまり、0x0000) は、無効なメッセージ ID として予約済みなので、使用してはなりません。

以下の表は、PUBLISH メッセージの変数ヘッダーの例を示しています。

フィールド
トピック名: "a/b"
QoS レベル 1
メッセージ ID: 10

この場合の変数ヘッダーの形式は、以下の表で示しています。

  説明 7 6 5 4 3 2 1 0
トピック名
バイト 1 Length MSB (0) 0 0 0 0 0 0 0 0
バイト 2 Length 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 Message ID MSB (0) 0 0 0 0 0 0 0 0
バイト 7 Message ID LSB (10) 0 0 0 0 1 0 1 0

ペイロード

パブリッシュするデータが含まれます。データの内容および形式は、アプリケーション固有のものです。 固定ヘッダーの「残りの長さ」フィールドには、変数ヘッダーの長さとペイロードの長さの両方が含まれます。

応答

PUBLISH メッセージへの応答は、QoS レベルによって異なります。 以下の表は、予期される応答を示しています。

QoS レベル 予期される応答
QoS 0 なし
QoS 1 PUBACK
QoS 2 PUBREC

アクション

PUBLISH メッセージは、パブリッシャーからブローカーへ、またはブローカーからサブスクライバーへのいずれかで送信できます。 メッセージを受信したときの受信側のアクションは、メッセージの QoS レベルによって異なります。

QoS 0
メッセージをすべての関係するパーティーで利用できるようにします。
QoS 1
メッセージを持続ストレージへログ記録し、すべての関係するパーティーで利用できるようにし、送信側に PUBACK 応答を戻します。
QoS 2
メッセージを持続ストレージへログ記録し、すべての関係するパーティーで利用できるようにしないで、送信側に PUBREC メッセージを戻します。

ブローカーがメッセージを受信する場合、関係するパーティーとは、PUBLISH メッセージのトピックに対するサブスクライバーを指します。 サブスクライバーがメッセージを受信する場合、関係するパーティーとは、1 つ以上のトピックにサブスクライブし、ブローカーからのメッセージを待機するクライアント上のアプリケーションを指します。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac10970_