通知サービスのさまざまな JMS 実装を負荷テストしました。ActiveMQ、HornetQ、および OpenMQ のいずれも期待どおりに動作しません (信頼性とメッセージの優先順位付けの問題)。しかし、今では OpenMQ で最高の結果が得られています。おそらく設定ミスに過ぎない 2 つの問題が予想されます (希望します)。JDBC ストレージを備えたもの
テスト シナリオ:
1 つのキューを持つ 2 つのプロデューサーが、異なる優先度でメッセージを送信します。プロデューサーが生成するよりもわずかに遅い一定の速度でキューから消費する 1 つのコンシューマー。OpenMQ はスタンドアロンで実行され、PostgreSQL を永続ストレージとして使用します。すべてのメッセージは Apache Camel ルートから送信および消費され、すべて永続的です。
問題:
- 約 50000 件のメッセージの後、メモリ不足に関する警告とエラーが OpenMQ ログに表示されます (256Mb ヒープ サイズでのデフォルト設定)。プロデュースはブローカーによって抑制され、しばらくするとブローカーはディスパッチをまったく停止します。ブローカーの JVM メモリ使用量が最大になっています。
その目標を達成するためにブローカーを構成する方法:
- ブローカは、キュー サイズ (最大 1 000 000 メッセージ) とメモリ制限に依存しません。パフォーマンスは問題ではなく、信頼性のみです。
それは可能ですか?