1

IBM MQ6.1 を使用しています。IBM API を使用してメッセージをキューに送信します。膨大な数のメッセージを送信する必要があるため、マルチスレッドを使用してメッセージを同じ Queue に送信できるかどうか疑問に思っていました。助言がありますか?

4

1 に答える 1

1

絶対。メモリと CPU が許す限り、スレッドをいくつでも持つことができます。パフォーマンスを向上させたい場合は、各スレッドに独自の接続ハンドルが必要です。単一の接続ハンドルを使用すると、複数のスレッドからのすべての GET および PUT アクティビティが接続ハンドルを介して同期されます。多くの接続ハンドルを使用すると、GET アクティビティと PUT アクティビティが並行して発生する可能性があります。詳細については、WMQ Using Java マニュアルのマルチスレッド プログラムを参照してください。

MAXUPROCS などの OS カーネル設定が、WMQ が接続を受信するのに十分なスレッドを実行できるように設定されていること、およびMAXHANDSMAXCHANNELSなどの WMQ 設定が負荷に対応するために増加していることを確認してください。作業単位はスレッド スコープであるため、各スレッドは同期点に関して他のスレッドから独立していることに注意してください。たとえば、スレッド内で COMMIT を発行すると、専用の接続があると仮定して、その特定のスレッドによって送信されたメッセージのみがコミットされます。キューにはDEFSOPT (デフォルト共有オプション) の属性がありますが、これはアクティブにできる入力ハンドルの数に関連しています。排他的な入力用にキューを開いている場合でも、多くのスレッドがそれに書き込むことができます。

また、WMQ の v6.x は 2011 年 9 月にサポートが終了します。サポートされているバージョンを維持するために v7 に移行する計画を今すぐ開始してください。WMQ クライアント接続を使用している場合は、クライアントと QMgr をアップグレードします。v7 クライアントは v6 QMgr で正常に動作し、個別にアップグレードできます。もちろん、v6.x QMgr で使用する場合、v6 機能のみをサポートします。v7 クライアントはSupportPac MQC7としてダウンロードできます。

于 2010-08-06T12:55:41.027 に答える