2012-05-29 35 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