2

Solrにアクセスし、いくつかのドキュメントを順番に書き込んでコミットする複数のJavaタスクがあります。多くの場合、これらのタスクは同じドキュメントを変更します。私の問題は、あるタスクがコミットをトリガーし、終了し、コントロールを他のタスクに渡し、別のコミットを発行する可能性があることです。2 番目のタスクが開始される前に最初のコミットが完了していないと、solr ロック タイムアウト例外が発生します。

私が調査していた解決策の 1 つは、これらの各タスクで単純に更新を行い、コミットしないようにすることです。ただし、問題は、初期のタスクによる変更が後のタスクに表示されないことです。したがって、後のタスクは、前のタスクによって行われた変更の一部を上書きすることになります。

現在、次のタスクをトリガーする前に、各コミットの終了を検出できるかどうかを調査しています。何か案が?

皆さんなら、この問題をどのように解決しますか?

これらのタスクは、実際には変更できない既製の重要なコンポーネントです。

ありがとう、マックス

4

1 に答える 1

3

「タスク」が終了した後、バックグラウンドでコミットを実行しようとしているようです。コミットを同期的に行う方がよいでしょう。つまり、コミットが成功 (または失敗) するまでタスクを終了しないでください。(私は Solr を使用していないことを認めます。また、これらのアイデアを Solr API にどのようにマッピングするかはわかりません。)

于 2012-08-12T01:21:08.280 に答える