1

私は JBoss Community フォーラムをあきらめています - そこでは質問に対する回答を得ることはありません。代わりにここで試してみてください。

ライブ環境で見た問題を診断するのに役立つ小さなテスト プログラムを作成しましたが、JBoss MQ で構成可能な設定が無数にあることに少し混乱しており、それらのどれもが何もしないという事実にさらに混乱しています。違い。

環境はJBoss 4.0.,4です。

ライブ環境では、スタンドアロン Java アプリケーションからリモート マシン上の JBoss MQ トピック (MDB によってサービスされる) への JMS 接続が失われています。なぜそれが失われているのか(そして例外リスナーが作動しているのか)については、利用可能な情報がありません。

そこで、リモート JBoss 上のトピックに TextMessages (増分番号を含む) を送信する Java アプリケーションを使用してテスト環境を作成しました。

MDB コードが行うことは、TextMessage に数値を出力することだけです。

最初に気付いたのは、印刷するスレッドが「JMS SessionPool Worker-XX」と呼ばれていることです。ここで、XX は 0 から 32 です。送信者アプリケーションを再度実行すると、XX の値は 32 から 46 です。 run の場合、値は 46 ~ 60 です。パターンは常に同じです。JBoss の開始後の最初の実行ではより多くのスレッドが使用され、その後の実行では 14 または 15 のスレッドが使用されます。

では、質問 1: そのパターンの説明はありますか?

約 15,000 のメッセージを送信する実行中に、jms_messages テーブルが JBoss マシン上に構築されます。それは、JBoss MQ が追いつかないということですよね? 私は、メモリーが mysql-jdbc2-service.xml の MessageCache MBean 定義で指定されたしきい値を超えているに違いないと想定しました。しかし、JVM メモリを監視すると、HighMemoryMark に指定された 150MB の値にはほど遠いです。MessadeCache Bean の定義に関するこのコメントを誤解していると思います。ヒープ使用量が 150MB に達すると、受信したメッセージが jms_messages に書き込まれるようになると思っていましたが、明らかに間違っていました。

質問 2: JBoss MQ が jms_messages への書き込みを開始する状況はどのようなものですか?

最後にもう 1 つ質問があります。以下のコンテナー構成設定は、メッセージを処理しているスレッドの数に関係がありますか?

<container-pool-conf>
    <MaximumSize>500</MaximumSize>
<container-pool-conf>

ありがとうございました。

4

1 に答える 1

1

JBoss MQ を使用する必要が生じてから長い時間が経ちました...そのため、(興味深い) 質問に対する回答ではありませんが、とにかく役立つ可能性があります。

組み込みの HSQL データベースを JBoss MQ のメッセージ ストレージとして使用している場合、短時間で送信される 15,000 メッセージのような負荷を処理できません。永続的なメッセージ ストレージを放棄したい場合を除き (私が覚えている限り、それを構成できる)、実際のデータベースに切り替える必要があります。これはパフォーマンスには適していますが、一部のメッセージは永久に失われる可能性があります。

JBoss MQ は、これまでに作成された最高の JMS プロバイダーではありません。実際のところ、それは本番対応のソリューションではなく、それを使用するのは本当に苦痛です (適切なドキュメントがない、奇妙な構成、現在経験していること)。これが、JBoss の人々が JBoss 5.X で JBoss Messaging に切り替えた理由です (実際、商用の JBoss 4.X EAP では、GA ではなく、常に JBoss Messaging を使用していました)。

HornetQ に切り替えることは最善の選択肢ではありません。HornetQは十分に文書化されており、堅牢で、非常に大きな負荷を処理する準備ができています。

于 2013-03-17T19:06:03.060 に答える