2017-09-12 1 views
0

JdbcCursorItemReaderを使用してデータベースからデータを読み取るSpringバッチアプリケーションで作業していますが、このアプリケーションは単一のインスタンスを実行すると正常に動作します。春バッチアプリケーションのPCFインスタンスで読み取られた同じデータ

このアプリケーションをPCFにデプロイし、自動スケール機能を使用しましたが、複数のインスタンスがデータベースから同じレコードを取得しています。

他のインスタンスから重複したデータの読み取りを防止するにはどうすればよいですか?

+0

同じクエリを実行すると、同じデータが得られます。あなたは何をしようとしていますか? –

+0

私はstatus_nmカラムを使用してテーブルからデータを読み込んでいますが、値は新しいものです。これらのレコードをロックして他のインスタンスが選択できないようにするにはどうすればいいですか? updateまたはdeleteを呼び出すdeadlock.iを取得しているレコードを選択して更新を取得するかどうかを知る必要があります。最新の節を使用して更新または削除する必要があります。事前にjava.thanksを使用してSQLの現在の使用方法を教えてください。 – Ravi

答えて

0

これは通常、処理されたインジケータパターンを適用することによって処理されます。このパターンでは、各レコードが処理されるたびにステータスをマークする追加のフィールドが各行にあります。次に、クエリを使用して、気になるステータスに一致するレコードのみをフィルタリングします。この場合、状態はノード特有であり、ノードはそのノードタグを記録するだけでよい。

+0

処理されたインジケータパターンを使用することを意味するレコードインジケータin_processを使用して更新されます.dbから500レコードを読み込み、コミット間隔が100とすると、in_processインジケータはコミット間隔に達した後にデータベースでコミットされます。更新がその時間にコミットされていないので、DBから再度そのデータを読み込みます。 – Ravi

+0

プロセスインジケータパターンには2つの部分があります。 1つ目は、インスタンスを実行してリスナーを介して処理するアイテムをタグ付けすることです。次に、処理されると、インジケータが変更され、正常に処理されたことが示されます。 –

+0

this.aasのコード例をいくつか共有できれば、大きな助けになります。私は例を得ることができません。 – Ravi

関連する問題