Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使solr使用来自AMQ(rabbitMQ或ActiveMQ)的查询_Solr_Amqp - Fatal编程技术网

使solr使用来自AMQ(rabbitMQ或ActiveMQ)的查询

使solr使用来自AMQ(rabbitMQ或ActiveMQ)的查询,solr,amqp,Solr,Amqp,我想让我的应用程序使用AMQ队列(RabbitMQ或ActiveMQ)与Apache Solr服务器交互。因此,我想问,是否有此类实现,如果没有,我在哪里可以找到如何实现此类连接器的信息 我将编写一个“代理”应用程序,它可以执行以下操作: 从队列中获取消息 通过HTTP(其标准接口)向Solr发送相应的查询 将带有查询结果的消息放入队列中 应该很简单…我将编写一个“代理”应用程序,它可以执行以下操作: 从队列中获取消息 通过HTTP(其标准接口)向Solr发送相应的查询 将带有查询结果的消息放入

我想让我的应用程序使用AMQ队列(RabbitMQ或ActiveMQ)与Apache Solr服务器交互。因此,我想问,是否有此类实现,如果没有,我在哪里可以找到如何实现此类连接器的信息

我将编写一个“代理”应用程序,它可以执行以下操作:

  • 从队列中获取消息
  • 通过HTTP(其标准接口)向Solr发送相应的查询
  • 将带有查询结果的消息放入队列中

  • 应该很简单…

    我将编写一个“代理”应用程序,它可以执行以下操作:

  • 从队列中获取消息
  • 通过HTTP(其标准接口)向Solr发送相应的查询
  • 将带有查询结果的消息放入队列中

  • 应该很简单…

    您的集成案例可能适合使用ApacheCamel。Camel允许您创建将不同系统链接在一起的路由—在本例中是Solr(甚至是Lucene直接)和AMQP代理

    例如,您可能希望通过直接点击Lucene并利用Camel的Lucene组件(请参阅)来获得一些额外的效率,并创建一条路线,例如:

    from: amqp:exchange:queue:routingKey
    to: lucene:searcherName:query
    
    在这两行代码中,消息将从AMQP队列中检索,由Lucene处理,然后回复到。您还可以通过利用Camel的HTTP组件继续使用Solr的REST API,例如:

    from: amqp:exchange:queue:routingKey
    to: jaxb:marshal
    to: http://solr.server/api/uri
    to: jaxb:marshal
    
    在该路由中,您将从AMQP队列获取消息,将其封送为JSON或XML,将其发送到Solr URI,然后将响应解组返回到对象中


    没有任何预先准备好的东西可以为您提供这种开箱即用的功能,但是您可以利用多个集成框架来帮助您将系统连接在一起。

    您的集成案例可能适合使用Apache Camel。Camel允许您创建将不同系统链接在一起的路由—在本例中是Solr(甚至是Lucene直接)和AMQP代理

    例如,您可能希望通过直接点击Lucene并利用Camel的Lucene组件(请参阅)来获得一些额外的效率,并创建一条路线,例如:

    from: amqp:exchange:queue:routingKey
    to: lucene:searcherName:query
    
    在这两行代码中,消息将从AMQP队列中检索,由Lucene处理,然后回复到。您还可以通过利用Camel的HTTP组件继续使用Solr的REST API,例如:

    from: amqp:exchange:queue:routingKey
    to: jaxb:marshal
    to: http://solr.server/api/uri
    to: jaxb:marshal
    
    在该路由中,您将从AMQP队列获取消息,将其封送为JSON或XML,将其发送到Solr URI,然后将响应解组返回到对象中


    没有任何预先准备好的东西可以为您提供这种开箱即用的功能,但是您可以利用几个集成框架来帮助您将系统连接在一起。

    我实际上刚刚将一个从AMQP队列读取的solr插件放到github上。

    它基本上充当消费者,并使用现有的更新插件导入和解析更新


    可能不是100%的生产就绪,但我通过100000个单独的更新,它处理了所有问题。希望得到一些反馈。

    我实际上刚刚将一个从AMQP队列读取的solr插件放到github上。

    它基本上充当消费者,并使用现有的更新插件导入和解析更新


    可能不是100%的生产就绪,但我通过100000个单独的更新,它处理了所有问题。希望得到一些反馈。

    我创建了一个数据源,使数据导入处理程序能够从提取的JSON消息构建文档。它被称为AMQPDataSource,但是它目前仅适用于RabbitMQ,并且仅适用于JSON格式的消息。但是,我希望它能与其他经纪人合作,因此在名称中使用AMQP

    使用它类似于在数据导入配置中使用JDBC数据源

    AMQP数据源采用几个参数,这些参数通过数据导入配置传递给它。它们是:

  • AMQP主机->AMQP主机的服务器
  • exchangeName->AMQP交换的名称。如果它不存在, 它将被创建
  • queueName->AMQP队列的名称。如果是 不存在,它将被创建
  • nextDeliveryTimeoutMS->等待邮件传递的最长时间
  • 使用此数据源运行dataimport时,dataimport将持续拉取消息,直到超过nextDeliveryTimeoutMS

    我已经为它创建了一个JIRA问题,并上传了一个补丁。 JIRA发行的是SOLR-3588


    请随意查看。

    我创建了一个数据源,使数据导入处理程序能够从提取的JSON消息构建文档。它被称为AMQPDataSource,但是它目前仅适用于RabbitMQ,并且仅适用于JSON格式的消息。但是,我希望它能与其他经纪人合作,因此在名称中使用AMQP

    使用它类似于在数据导入配置中使用JDBC数据源

    AMQP数据源采用几个参数,这些参数通过数据导入配置传递给它。它们是:

  • AMQP主机->AMQP主机的服务器
  • exchangeName->AMQP交换的名称。如果它不存在, 它将被创建
  • queueName->AMQP队列的名称。如果是 不存在,它将被创建
  • nextDeliveryTimeoutMS->等待邮件传递的最长时间
  • 使用此数据源运行dataimport时,dataimport将持续拉取消息,直到超过nextDeliveryTimeoutMS

    我已经为它创建了一个JIRA问题,并上传了一个补丁。 JIRA发行的是SOLR-3588


    请随时查看。

    Thx。到目前为止,对我来说,它似乎也是唯一的选择。@Skarab:你也可以将它嵌入Solr,但我会将事情分开。这就是Mongrel2 web服务器的工作方式。它向收集部分结果页面和每个工作的工作人员发送消息