1

簡単なメッセージ委任アプリケーションを作成しています。メッセージはJMSを介して両端で送信されています。MDBを使用して、着信メッセージを処理し、変換して、ターゲットキューに送信しています。残念ながら、同じメッセージを着信キューに複数回送信することはできますが、重複を転送することはできません。

それで、それを達成するための最良の方法は何ですか?

着信キューでリッスンしている複数のMDBが存在する可能性があるため、着信メッセージの一意のメッセージUUIDを少なくとも1時間保存できる単一のキャッシュが必要です。このキャッシュにはどのようにアクセスする必要がありますか?シングルトン/静的クラスを介して(Java EE 5を実行しているため、シングルトンアノテーションがありません)?

さらに、すべての操作を同期する必要があると思いますよね?それはパフォーマンスに悪影響を及ぼしすぎますか?

4

1 に答える 1

2

@Ingo: データベース ソリューションに問題はありませんか。これには、本格的な DB サーバーまたは単純な apache derby ソリューションを使用できます。その場合、メッセージの一意の UId を格納し、一意性をチェックできる単純なテーブルを作成できます。このソリューションには次の利点があります。

  1. シンプルなコード
  2. 時間制限のあるキャッシュ (1 時間) は必要ありません。メッセージの一意性を永久に確認できます。
  3. 受信したメッセージの永続的な記録。
  4. 高価な同期は必要ありません。DB 分離レベルに依存して一貫性を保つことができます。
  5. おそらく多くのアプリケーションを展開するための集中型ソリューション。
于 2011-07-15T06:40:32.043 に答える