2012-05-29 52 views
2

如何使用Solrj處理Solr中的事務管理?網絡上沒有太多與此相關的文檔。但是,如果有人能夠使用SolrJ提供與交易管理相關的任何鏈接或信息,我將不勝感激。使用solrj solrj事務管理

+2

你說的是DB風格的事務管理嗎? SolrJ沒有任何意義。沒有回滾和提交通過Web服務調用發送到SOLR,因此它們在那裏排隊,並且沒有併發訪問問題(從內存)的風險。你在使用嵌入式SOLR嗎? – nickdos

+0

是的,我想知道如何使用solrj實現數據庫樣式事務管理,當有多個讀取和寫入Solr和數據庫時。我們使用Hibernate進行數據庫事務管理。如果Solr或數據庫中存在異常,則需要回滾數據庫落實和solr落實。無論我瞭解什麼,看起來這個事務管理都需要使用SolrJ API來完成提交和回滾。請讓我知道是否有其他更好的方法來做到這一點。謝謝。 – Ravi

+0

回到你問過的問題上,看看他們中的任何一個人是否有你認爲「正確」的答案,如果是的話,用綠色的勾號標記出正確的答案。你的利率現在說75%這不算太壞,所以也許你已經這樣做了...... – nickdos

回答

2

您將不得不以編程方式處理SolrJ中的交易。處理多個寫入時。

  1. 使用SolrServer api add方法將SolrInputDoucments添加到服務器。
  2. 添加完所有SolrInputDocuments後,調用SolrServer api中的commit方法提交所有更改。
  3. 如果Solr出現異常,如果要將寫入回滾到Solr,請調用SolServer api回滾方法。
  4. 如果您想要將寫入還原回數據庫,則只需從catch塊中拋出一個運行時異常。

這就是我處理事務管理的方法。如果有人有更好的答案,請隨時改進答案。

+0

你如何處理提交異常的情況?對於那些使用@Transaction註釋的人來說,這種失敗發生在使用SolrJ的方法主體之外。 –

+0

你看到的例外是什麼?如果提交失敗並出現異常,我們可以捕獲異常並調用Solr回滾。但請注意,回滾會將每次調用回滾到最後一次提交。 – Ravi