2

私は現在、大量の監査データのSQL書き込みを実行しているWebアプリケーションを書き直しています。ユーザー操作のすべてのステップで、何らかの情報をデータベースに書き込むメソッドが実行されます。これにより、データベースの問題が原因で対話が停止し、ユーザーに影響を与える可能性があります。

理想的には、これをメッセージベースのアプローチに移行したいと考えています。データを書き込む必要がある場合は、消費者がこれらを取得してデータベースに書き込むキューでも起動されます。これは重要なデータではなく、サーバーがダウンした場合の損失は許容されます。

組み込みの JMS キューとブローカー、または Java キューを使用する必要があるかどうか、少し混乱しています。または、私がよく知らないもの(提案?)

最善のアプローチは何ですか?

詳細情報: アプリは spring を使用し、websphere 6 で実行されています。すべてのメッセージ通信はローカルであり、別のサーバーとは通信しません。

4

4 に答える 4

1

問題の説明に基づいて、プレーンキューで十分です。固定サイズのキューを作成し、メッセージが重要ではないと言ったためにメッセージがすぐにいっぱいになった場合は、メッセージを破棄できます。

考慮事項:

  • この機能は、現在または将来、他のアプリでも必要ですか。
  • メッセージの生成率が非常に高いため、多数のユーザーがログインすると大量のヒープメモリを消費し始める可能性があります。メッセージが失われないようにする場合は重要です。
于 2013-03-21T19:10:44.560 に答える
1

JMS を使用したロギングはやり過ぎだと思います。特に、ロギングが JMS を使用する唯一の理由である場合はなおさらです。

DBAppenderを見てください。データベースに直接ログインできます。パフォーマンスが気になる場合は、Logback を使用して非同期にログを記録できます。

それでも JMS を使いたい場合は、Logback に JMS Queue & Topicアペンダーがあります。

于 2013-03-21T06:48:11.393 に答える
0

異なるサーバーが関与している場合にのみ、JMS キューを使用します。したがって、あなたの場合、Javaキューを使用してシンプルでプレーンな純粋なJavaで実行します。

于 2013-03-21T06:08:52.040 に答える