CONNECT - クライアントのブローカーへの接続要求

クライアントとブローカー間で TCP/IP ソケット接続を確立するとき、 プロトコル・レベルのセッションが必要です。 接続の方向はクライアントからブローカーであること、 クライアントはブローカーの listener 機能をサポートすることが考えられます。

固定ヘッダー

固定ヘッダーの形式については、以下の表で示しています。

ビット 7 6 5 4 3 2 1 0
バイト 1 メッセージ・タイプ (1) DUP フラグ QoS レベル RETAIN
  0 0 0 1 x x x x
バイト 2 残りの長さ

DUP、QoS、および RETAIN フラグは、CONNECT メッセージでは使用されません。

残りの長さは、変数ヘッダー (12 バイト) の長さに、 ペイロードの長さを加えたものです。 これは、マルチバイト・フィールドの場合もあります。

変数ヘッダー

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

  説明 7 6 5 4 3 2 1 0
Protocol Name
バイト 1 Length MSB (0) 0 0 0 0 0 0 0 0
バイト 2 Length LSB (6) 0 0 0 0 0 1 1 0
バイト 3 'M' 0 1 0 0 1 1 0 1
バイト 4 'Q' 0 1 0 1 0 0 0 1
バイト 5 'I' 0 1 0 0 1 0 0 1
バイト 6 's' 0 1 1 1 0 0 1 1
バイト 7 'd' 0 1 1 0 0 1 0 0
バイト 8 'p' 0 1 1 1 0 0 0 0
Protocol Version Number
バイト 9 Version (3) 0 0 0 0 0 0 1 1
接続フラグ
バイト 10

Will RETAIN (0)
Will QoS (01)
Will flag (1)
Clean Start (1)

x x 0 0 1 1 1 x
Keep Alive Timer
バイト 11 Keep Alive MSB (0) 0 0 0 0 0 0 0 0
バイト 12 Keep Alive LSB (10) 0 0 0 0 1 0 1 0
Clean Start フラグ
(1) に設定されます。
Keep Alive Timer
10 秒 (0x000A) に設定されます。
Will メッセージ
  • Will フラグは (1) に設定されます。
  • Will QoS フィールドは 1 です。
  • Will RETAIN フラグは (0) にクリアされます。

ペイロード

CONNECT メッセージのペイロードには、 1 つまたは 3 つの UTF エンコード・ストリングが含まれます。 Will フラグが変数ヘッダー内に接続フラグ・バイトで設定される場合、 ペイロードには、3 つの UTF エンコード・ストリングの合計が含まれていなければなりません。
クライアント ID

最初の UTF エンコード・ストリング。 1 から 23 文字までの長さの クライアント ID で、 ブローカーに対してクライアントを固有に識別させます。 クライアント ID は、単一ブローカーに接続するすべてのクライアントにまたがって固有でなければならず、 QoS レベル 1 と QoS レベル 2 でメッセージ ID メッセージを処理する際のキーとなります。クライアント ID が 23 文字を超えている場合、 ブローカーは、CONNACK 戻りコード 2 (ID が拒否された) で CONNECT メッセージに応答します。

Will Topic

2 番目の UTF エンコード・ストリング。 Will Message は、Will Topic にパブリッシュされます。 QoS レベルは、Will QoS フィールドによって定義され、 RETAIN 状況は、変数ヘッダー内の Will RETAIN フラグによって定義されます。

Will Message

3 番目の UTF エンコード・ストリング。 Will Message は、クライアントが予期せずに切断された場合に Will Topic にパブリッシュされるメッセージの内容を定義します。

Will Message は CONNECT メッセージの中で UTF エンコードされますが、 これが Will Topic に対してパブリッシュされる場合、 最初の 2 つの長さバイトではなく、 メッセージのバイトだけが送信されます。 ブローカーが Will Message を実行するときに送信されるメッセージは、 UTF エンコードではなく、生の ASCII です。

応答

クライアントからの CONNECT メッセージへの応答として、 ブローカーは CONNACK メッセージを送信します。

「妥当な」時間が過ぎてもブローカーから CONNACK メッセージを受信しない場合、 クライアントは TCP/IP ソケット接続を閉じて、もう一度セッションを開始する (つまり、 ブローカーに対してソケットを開き、CONNECT メッセージを発行する) 必要があります。 「妥当な」時間は、アプリケーションのタイプおよびコミュニケーション・インフラストラクチャーによって異なります。

関連概念
WebSphere MQ Telemetry Transport

関連資料
WebSphere MQ Telemetry Transport サービス品質レベルおよびフロー
WebSphere MQ Telemetry Transport メッセージ形式
CONNACK - 接続確認要求
WebSphere MQ Telemetry Transport および UTF-8