私たちのsolrインデックスは、DataImportHandlerのフルインポートによって必要に応じて、スケジュールに従ってリフレッシュされます。さまざまな理由でインポートが失敗する場合がいくつかありました。Solr - DataImportHandlerからのインポートに失敗した旨の通知を受け取るにはどうしたらいいですか?
DataImportHandlerでインポートを実行中にエラーが発生したという通知(電子メールが望ましい場合があります)を受け取る方法はありますか?
私たちのsolrインデックスは、DataImportHandlerのフルインポートによって必要に応じて、スケジュールに従ってリフレッシュされます。さまざまな理由でインポートが失敗する場合がいくつかありました。Solr - DataImportHandlerからのインポートに失敗した旨の通知を受け取るにはどうしたらいいですか?
DataImportHandlerでインポートを実行中にエラーが発生したという通知(電子メールが望ましい場合があります)を受け取る方法はありますか?
ある程度の成功を収めているEventListenerを使用しようとした後、我々は我々の選択肢を検討し、最終的にはより少なくより確実なアプローチに落ち着きました。
Solrを拡張する代わりに、私たちは既存の監視インフラストラクチャ(主にNagiosを使用)を使ってdataimporthandler
の状態をポーリングしています。毎分実行され、インポートが失敗したことを検出した場合は、通常のチャネルを介して警告します。これは良いことですが、ジョブがまったく実行されていないかどうかを検出することはできません。
全体的にはこれで十分です。既存のインフラストラクチャを使用し、Solrの中心的な機能に限定して取り組んでいます。私はSolr 4.0へのアップグレードを最終的に行うときにこれを再訪する予定です。
簡単な設定ソリューションはありません。しかし、代替案が存在する場合、ほとんど仕事をしなくてはならないかもしれません。
イベントEventListenerを受信するために、EventListener
をdata-configにDIHで登録できます。
はWiki
<dataConfig>
<document onImportStart ="com.foo.StartEventListener" onImportEnd="com.foo.EndEventListener">
....
</document>
</dataConfig>
あなたEventListener
あなたはDataImportHandlerのほとんどへのアクセスを提供Contextオブジェクト、&イベント統計のオブジェクトにアクセスすることができます参照してください。例えば
、あなたのcom.foo.EndEventListener
はあなたが# of DocsFailed
、# of DocsSkipped
なStaisticsを取得するためにContext
オブジェクトハンドルを使用することができonImportEnd
イベント... Context
は、DIHの内部の多くを公開する貴重なオブジェクトです。この情報を使って何をする必要があるのかは、イベントリスナーの責任です。
おそらく注意点ですが、DIH通知はほとんどの事実の後にイベントが通知されることはありません。DIHがリスナーに通知するためにインポートプロセスが完了するのを待たなければなりません。回避策。