0

私は、そのファイルを処理して値をデータベースに保存する必要がある学生のデータを含む、一度に複数の XML ファイルを受信する Web サービスを使用しています。

そのために、JMS キューを使用しました。オブジェクトメッセージを作成してキューにプッシュしています。しかし、キューがメッセージを処理しているときに、別のメッセージを処理できるため、データベース テーブルがロックされます。

5000 個の値を含む 1 つのリストがあり、for ループでリストを反復し、JMS メッセージを処理しているとします。

これはまさに私のシナリオです。問題は、1 つのメッセージの処理中にテーブルがロックされ、残りのファイルがキューに残っていることです。

いくつかの解決策を提案する

4

2 に答える 2

1
  1. 正しいロック戦略を使用していることを確認してください(テーブル レベルのロックと行レベルのロックを参照してください) 。
  2. 一度に 1 つずつメッセージを処理できるかどうかを確認してください (JMS コンシューマ conf。) この方法では、最初のメッセージが 2 番目のメッセージのロックを解放します。

編集:タイプミスとリンク

于 2013-09-14T16:44:04.367 に答える
0

私の理解が正しければ、データベースの処理は、メッセージをキューから取り出すリスナーにあります。

各リスナーは独自のスレッドで実行されるため、データベースの分離とテーブル/行のロックについて心配する必要があります。

行をロックするか、データベースの ISOLATION レベルを SERIALIZABLE に設定して、一度に 1 つのスレッドのみがテーブルを INSERT または UPDATE することを保証する必要があります。

于 2013-09-04T13:24:45.973 に答える