WebSphere® Message Brokerは、一連のノードにより、TCP/IP 入出力ストリームへのアクセスをインプリメントします。
TCP/IP ノードには、TCPIPServer ノードと TCPIPClient ノードの 2 つのセットがあります。 データ・ストリームへのアクセスの点では、両方のセットとも同一の機能があります。ただし、一方のセットはクライアント接続を使用し、他方のセットはサーバー接続を使用します。 結果として、ノードは接続を確立する方法については異なりますが、接続の確立後は同じ方法でストリームを使用します。
これらのノードのプロパティー間の主な違いは、TCPIPServer ノードを使用してホスト名を変更できないことです (常に localhost でなければならないため)。 ポートは実行中のプロセスに拘束されるので、同じポートを使用するすべての TCPIPServer ノードは、同じ実行グループ中になければなりません。 同じポート上の TCPIPClient ノードを別々の実行グループで使用することはできますが、クライアント接続を共用することはできません。その理由は、クライアント接続は、1 つのプロセスにマップする特定の実行グループに拘束されるからです。 2 つのノードのセット (TCPIPClient と TCPIPServer) 中には、以下の 3 つのタイプのノードがあります。
入力ノードと受信ノードは入力ストリームにアクセスしてデータを取り出し、出力ノードは出力ストリームにアクセスしてデータを送信します。 両方のストリームに同時にアクセスできる単一ノードはありません。 両方のストリームに同時にアクセスするには、1 つのメッセージ・フローで複数のノードに接続する必要があります。
TCPIPServer ノードおよび TCPIPClient ノードの構成可能サービスは、管理者が事前定義する必要があります。 TCP/IP 構成可能サービスの接続の詳細は、テスト環境または実動環境用にブローカーを構成する時点で管理者が定義します。 TCP/IP 構成可能サービスは、それを利用するメッセージ・フローをデプロイする前に定義しておく必要があり、これはテスト環境でも同じです。 詳しくは、TCP/IP のプロパティーの構成を参照してください。
入力ノードを使用すると、接続の入力ストリームにアクセスできます。 このノードは、ストリーム中のデータが着信すると起動され、メッセージ・フローの処理を開始します。 入力ノードは、スレッドとトランザクションの管理を制御します。 TCP/IP ノードは TCP/IP との対話という点でトランザクションではありませんが、同じフロー内の他のノードはトランザクションである場合があります (例えば WebSphere MQ ノード)。 入力ノードは、使用される接続ごとにスレッドを作成するのではなく、以下の 2 つの要件が満たされるのを待ちます。
例えば、1 つの追加インスタンスのみがある 1 つの入力ノードで、1,000 の TCP/IP 接続を処理できます。 処理できる理由は、ノードは接続をポーリングしませんが、指定された条件が満たされると起動されるからです。
受信ノードは、その In ターミナルにメッセージが着信すると、接続からデータを読み取るために起動されます。 このノードは、データが着信するのを待ってから、Out ターミナルに送信します。 受信ノードは、特定の接続を使用するように構成したり(接続の ID を指定する)、使用可能な任意の接続を使用するように構成したりできます。 このノードが使用可能な任意の接続を使用するよう構成すると、使用可能なデータのある最初の接続からデータを受信します。
出力ノードはデータを接続に送信します。 このノードは、その In ターミナルに着信するメッセージにより起動されてから、そのメッセージに含まれるデータをストリームに送信します。 ノードで受信されるのと同じメッセージが、Out ターミナルに送信されます。
6 つのクライアント・ノードとサーバー・ノードを結合して、より複雑な操作を提供することができます。 例えば、1 つの出力ノードの後に 1 つの受信ノードを続けると、データの同期要求が可能になります。
すべての接続の作成時に、固有 ID が割り当てられます。 ノードが接続を使用するたびに、使用される ID はローカル環境に書き込まれます。 フロー中でその接続を後で使用するノードは、この ID を指定することによって同じ接続にアクセスできます。受信ノードと出力ノードは、ローカル環境中の指定場所で検索して、この ID を検出します。 デフォルトでは、ノードがその接続の詳細を書き込む場所は、使用する ID があるかどうかを次のノードが検索する場所とは違います。 直前のノードによって送信された ID を使用するようにノードを構成できます。 例えば、ノードの結合で示されている出力ノードと受信ノードの組み合わせを、受信ノードが先行する出力ノードから WrittenDestination データを使用できるように構成することもできます。
ID の使用により、一連のノードが同じ接続にアクセスできますが、2 つのメッセージ・フロー・スレッドが同じ接続にアクセスするのを妨げることはありません。 初めて接続が使用される際には、その接続を予約して、他のノードが ID を認識していない限りアクセスできないようにすることができます。 例えば、ノードの結合で示されている出力ノードと受信ノードの組み合わせでは、接続を予約して、受信ノードがその接続を使用する前に他のスレッドがアクセスできないようにしています。 デフォルトでは、次に受信ノードは終了時に接続を解放します。
接続を予約する (そして正しい ID を指定してアクセスする) 機能を使用すると、フロー全体、さらには複数のメッセージ・フローにわたる TCP/IP 接続との複雑な対話を作成できます。 この結果、TCP/IP 対話と、WebSphere MQ のような他の非同期トランスポート機構を併用できます。
予約済みの接続は何らかの時点で解放しなければなりません。解放しないと、無期限に使用不可のままになります。 予約済みの接続と使用可能な接続について詳しくは、接続の管理を参照してください。
TCP/IP ノードを非同期パターン中で使用できます。非同期パターン中では、データは TCP/IP 出力ノードによって送出され、TCP/IP 入力ノードによって戻して受け取られます。 2 つのメッセージ・フローにわたることにより、最初のフローの状態はすべて失われ、2 番目のフローからアクセスできなくなります。 TCP/IP ノードを使用すると、接続上に応答の詳細を保管してから、同じ接続に新しいイベントが着信した際に入力ノードで使用できます。 デフォルトでは、このデータはローカル環境から取得されますが、どの場所からでもデータを取得するようにノードを構成できます。例えば、WebSphere MQ ヘッダー中の Correlid フィールドやメッセージ ID が含まれます。