Oracle Service Bus (OSB) を MOM として使用しており、宛先 URI は IBM MQ キューです。どちらが優先される交通手段か知りたいだけです。OSB は、同じものに対して JMS アダプタとトランスポート用の MQ アダプタの 2 つのアダプタを提供します。同じことの長所と短所を知っている人はいますか。ティア
6 に答える
通常、ネイティブ MQI インターフェースを介してメッセージを送信すると、JMS を使用するよりも高速になります。実際には、1 日に大量のメッセージを送信していない限り、実際の違いが分かるとは思えません。ただし、速度以外にも考慮すべき点があります。たとえば、MQI アプリケーションに慣れていない場合、学習曲線は JMS よりも急になります。
JMS ヘッダー情報は、MQ を介して別の JMS 宛先に送信されるときに、MQRFH2 ヘッダーにマップされます。MQRFH2 ヘッダーの組み込みは、作成した宛先オブジェクトから駆動されます。宛先が JMS エンドポイントの場合、ヘッダーが含まれます。
フィールドがどのようにマッピングされるかを説明する以下のリンクを含めました。
実際には、1 日に何百万ものメッセージを送信していない限り、WebsphereMQ での JMS のパフォーマンスはニーズを十分に満たしていると思います。リクエストの返信でスレッドのブロックが行われる限り、これについて心配する必要はないと思います。デフォルトでは、WebsphereMQ の応答は、要求元のスレッドではなく、別のスレッドによって消費されます。
私が見つけたものを追加したかっただけです。Queue インスタンスを作成するときは、次のことを行う必要があります。
Queue queue = queueSession.createQueue("queue:///" + queueName + "?targetClient=1");
//Send w/o MQRFH2 header (i.e. receiver is not a JMS client but just MQ)
「?targetClient=1」を含めると、生のメッセージがヘッダーなしで送信されます。
これが誰かに役立つことを願っています。マーク
これは、MQ キューの反対側にあるプログラムが JMS または「ネイティブ」MQ メッセージを予期しているかどうかによって異なります。
MQ は、ネイティブ キュー メカニズムまたは JMS メッセージのトランスポートとして機能できます。違いは、JMS メッセージにはメッセージ バッファの先頭にいくつかの標準ヘッダー フィールドがあり、「ネイティブ」mq メッセージには、プログラムがバッファに送信したデータだけが含まれていることです。
個人的な豊富な経験から、可能であればネイティブ MQ を使用することを強くお勧めします。
JMS トランスポートの短所(WMQ を使用する場合) -
- JMS でのメッセージ速度が遅い (私が測定しました!)
- 「.bindings」ファイル (JNDI サーバーとして機能する) の使用は、WMQ エクスプローラー (または恐ろしい JMSAdmin コマンド ツール) を使用してのみ編集できるため、面倒です。
- WMQ と Weblogic の両方に関する高度な知識が必要です。
- 構成を変更するたびにOSBドメインを再起動する必要があります
JMS トランスポートがネイティブ MQ より優れている点は、XA トランザクションのサポートだけです。これは OSB 11.1.1.7 で解決され、両方のトランスポートが XA をサポートするようになりました。
ネイティブ MQ の長所 -
- もっと早く
- OSB は MQ ヘッダーに直接アクセスできます (これは素晴らしいことです!)
- 実行時にネイティブ MQ トランスポートを構成可能 (sbconsole を使用)
- 接続プールの容易な管理
繰り返しますが、可能な限り OSBでネイティブ MQトランスポートを使用することを強くお勧めします。