web-dev-qa-db-ja.com

メッセージチャネルとメッセージキュー自体の違いは何ですか?

メッセージチャネルとメッセージキュー自体の違いは何ですか?

彼らは違うものです。キューは実際にFIFOの方法で処理される(リスナーにプッシュされる)メッセージを保持します。

チャネルはメッセージが送信される媒体です。
それはどういう意味ですか?本「エンタープライズ統合パターン」でそれは言う:

メッセージチャネルを使用してアプリケーションを接続します。1つのアプリケーションはチャネルに情報を書き込み、もう1つのアプリケーションはチャネルからその情報を読み取ります。

これは、このメッセージチャネルが実際にキューを抽象化して、メッセージのプロデューサーおよびコンシューマーから遠ざけることを意味しますか?しかし、それは本当に正しくありませんか?プロデューサーがメッセージをキューに入れる必要がある場合、プロデューサーは実際に、接続先のキューマネージャーとキュー名を指定します。

また、使用しているプロトコルごとに個別のチャネルがあり、データ形式ごとに個別のチャネル(XML、JSONなど)があるという、チャネル内の異なるプロトコルおよびチャネル内の異なるデータ形式の概念もあります。これにより、さまざまなキューがさまざまなチャネルからピックアップできるようになります。しかし、さまざまなデータ形式のさまざまなキューを直接呼び出さないのはなぜですか?チャンネルの役割は何ですか?それは単なるつながりですか?

MQMはまったく新しいです。私はメッセージの作成と消費を含むこのプロジェクトに割り当てられたばかりで、これに心を奪おうとしています。

19
alokraop

Shashiの答えを少し拡張するために、参照されているEIPブックが高レベルのメッセージングパターンについて話していることを覚えておいてください。その文脈では、著者は、メッセージが2点間で転送され、「チャネル」という単語を選択する媒体の総称を必要としていました。

本の目的のために、achannelは、任意のメッセージ転送ベンダーのために、メッセージを移動する2つのエンドポイントを接続します。この場合、チャネルにはサービスクラスの属性があり、さまざまなパターンをサポートします。 1-1、1-many、many-1、many-manyなどがあります。

たとえば、ZeroMQの場合、エンドポイントは2つのピアツーピアノードであり、それらの間にメッセージングエンジンはありません。 IBM MQの場合、1つのエンドポイントは常にキューマネージャー(メッセージングエンジンの一種)であり、もう1つのエンドポイントはアプリケーションまたは別のキューマネージャーです。

この例に基づいて、本で使用されているchannelおよびメッセージングトランスポートで定義されているchannelは、抽象化のさまざまなレベル。 MQで使用されるchannelは、通信パスを定義する特定の構成パラメーターのセットであり、CONNAMEMAXMSGL、チューニングパラメーター、SSLパラメーターなどの属性が含まれます。 MQchannelが正常に開始されました。チャネルのステータスを表示することで、実行中のインスタンスを確認できます。 CLUSRCVRSVRCONN、および(あまり一般的ではありませんが)RCVRまたはRQSTRチャネルの場合、同じチャネルの複数のインスタンスが同時にアクティブになることがあります。

私と一緒にいる場合、MQでの用語channelの使用は常に1つ以上のポイントツーポイントネットワーク接続を表すのに対し、EIPブックでは用語channelは、「アプリケーションのエンドポイント間でメッセージを移動するもの」と大まかに翻訳されます。共有メモリを使用してキューマネージャに直接接続されている2つのアプリケーションが、EIPで定義されているchannelを使用しているが、notが用語はIBM MQによって定義されています。

その例に基づいて、用語channelのEIPバージョンにキューマネージャーが含まれていることは明らかですandキューマネージャーとアプリケーション間のMQ接続エンドポイント。

総括する:

  • EIPブックのchannelは、アプリケーションエンドポイントの1つではないすべてのメッセージングインフラストラクチャであり、MQコンテキストでは、キューマネージャーとMQチャネルが含まれます。
  • IBM MQchannelは、キューマネージャーと別のキューマネージャーまたはクライアントアプリケーションとの間のネットワーク接続を定義する特定の構成です。

これにより、混乱を招くのではなく、用語が明確になることを願っています。必要に応じてコメントに基づいて更新します。

14
T.Rob

メッセージキューには、プロデューサーによって送信されたメッセージが格納され、コンシューマーに配信できます。チャネルは、プロデューサーからキュー、キューからコンシューマー、またはキューマネージャー内の1つのキューから別のキューマネージャー内の別のキューにメッセージを送信するためのメディアまたは通信リンクです。

チャネルには次の2つのタイプがあります。

1)メッセージチャネルは、2つのキューマネージャ間の単方向通信リンクです。メッセージチャネルは、2つのキューマネージャ間でメッセージを転送するために使用されます。

2)A MQIチャネルは、アプリケーション(プロデューサーまたはコンシューマー)をサーバーマシンのキューマネージャーに接続します。 MQ API呼び出しと応答をMQクライアントアプリケーションとキューマネージャ間で転送するには、MQIチャネルが必要です。

したがって、簡単に言えば、チャネルは、メッセージを送受信するためのクライアントアプリケーションとキューマネージャーの間(またはキューマネージャーの間)の通信メディアです。

MQは独自のプロトコルを使用して、クライアントアプリケーションからキューマネージャーへ、およびキューマネージャー間でメッセージを送信します。メッセージに含まれるデータの形式は重要ではなく、バイト、XML、JSONなど、何でもかまいません。どのタイプのデータも同じチャネルを介して送信できます。

これがお役に立てば幸いです。

9
Shashi

WebSphere MQキュー

キューはメッセージのコンテナです。キューをホストするキューマネージャに接続されているビジネスアプリケーションは、キューからメッセージを取得したり、キューにメッセージを書き込んだりできます。キューは、保持できるメッセージの最大数とそれらのメッセージの最大長の両方に関して容量が制限されています。

参考

チャンネル

WebSphere®MQは2つの異なるタイプのチャネルを使用します:

  • 2つのキューマネージャ間の単方向通信リンクであるメッセージチャネル。 WebSphere MQは、メッセージ・チャネルを使用して、キュー・マネージャー間でメッセージを転送します。両方向にメッセージを送信するには、各方向のチャネルを定義する必要があります。
  • MQI(メッセージキューインターフェース)チャネル。双方向であり、アプリケーション(MQIクライアント)をサーバーマシンのキューマネージャーに接続します。 WebSphere MQはMQIチャネルを使用して、MQIクライアントとキューマネージャー間でMQI呼び出しと応答を転送します

参考

2
Premraj