【问题标题】:SolrJ Thread SafetySolrJ 线程安全
【发布时间】:2011-03-23 05:10:23
【问题描述】:

我在 Web 应用程序中使用 CommonsHttpSolrServer。在多个请求上重用 CommonsHttpSolrServer 是否安全,或者我应该为每个请求实例化一个新对象?在 API 文档中找不到答案。

【问题讨论】:

  • 您是在问是否可以在不同的线程中使用同一个对象,或者是否可以将同一个对象用于不同的查询?
  • 我在问我是否可以在不同的线程中使用相同的对象进行单独的查询:)

标签: java servlets solrj


【解决方案1】:

根据documentation 和源cmets,SolrJ 是线程安全的。

但是,更新 solr 时要小心。根据this post,事务是按实例实现的,而不是按队列实现的。这意味着每个线程都没有自己的隔离事务可以使用。回滚会将每次调用(无论发起线程如何)回滚到最后一次提交。

总的来说,这意味着您应该可以安全地使用任意数量的线程进行查询(使用相同的 CommonsHttpSolrServer)。但是,如果您希望利用回滚,则需要确保一次只有一个线程在更新您的 solr 实例(无论对象分布如何)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2021-07-12
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2011-08-01
    相关资源
    最近更新 更多