2017-01-25 6 views
5

私たちはバックエンドプロセッサであり、JMS MQを使ってプログラミングしています。 2つのキューがあります。 1つはメッセージを取得するために使用され、もう1つはメッセージを送信するために使用されます。すべての銀行ユーザーは、IB、MBなどを通じてQ1にメッセージを送信します.Q1からメッセージを受信して​​処理し、Q2にメッセージを送信します。Websphere Message Queueマルチスレッド

現在のところ、マルチスレッドは使用していません。これを行うには、このスレッドまたは単一のスレッドに対してマルチスレッドを使用できるかどうかで十分です。 Q1から1つずつメッセージを取得して処理しているからです。

質問がわからない場合は、戻ってください。誰か助けてください。

答えて

5

はい、JMSでは、同じキューに複数のリーダーが存在します。これは、マルチスレッド、複数のアプリケーションインスタンス、またはメッセージをフェッチしてコールバックやその他のメカニズムを介してハンドラに渡すディスパッチレイヤーによって実行できます。

ただし、アプリケーションでサポートする必要があります。たとえば、2つのメッセージが関連しており、順番に処理する必要がある場合、キューに複数のリスナーがある場合、その順序は保持されません。これは、非同期メッセージングパターンが、メッセージが注文の依存関係や親和性を持たないことを強く好む理由の1つです。

マルチスレッドを使用する場合は、トランザクション性を維持することが重要です。複数のスレッドが同じ接続を使用していて、1つがCOMMITを発行した場合、その接続を共有しているすべてのスレッドにわたってすべての未解決のメッセージがコミットされます。

+0

あなたの答えをありがとうRob。だから私たちはすべてのスレッドの権利のための新しい接続を使用する必要があります。 –

+0

トランザクションの場合は、トランザクションのスコープとスレッドのスコープが一致していることを確認する必要があります。これは通常スレッドごとの接続を意味します。それがトランザクションでない場合は問題ではありません。ビジネス要件を知らなければ、その質問に対する決定的な答えはありません。 [tag:ibm-mq]タグの上にマウスを置いて「info」をクリックすると、MQの「Getting Started」情報が大幅にコンパイルされます。 –

+0

Robにおねがいします。クライアントがバックエンドでこれを処理し、顧客の残高の詳細をクライアント[別のキュー]に応答します。 –