Spring Integration调用Apache Solr RESTful服务

时间:2013-05-24 10:26:51

标签: spring-mvc spring-integration

我想使用Spring Integration调用Apache Solr。 Solr为搜索提供类似RESTful的功能,例如我想打电话:http://localhost:8983/solr/#/ccy/query?q=id:*&wt=json这将返回 json 字符串。

因此计划提供一个ReferenceData Controller,它调用一个服务,然后通过spring集成调用Solr。但我需要响应是同步的。

我查看了提供的示例Spring Integration代码,并遇到了rest-http示例。但它想要超越我的头脑。那么我该怎么做呢,任何代码示例都会有用。

由于 GM

2 个答案:

答案 0 :(得分:1)

其余样本集中在服务器端;在客户端,你需要像...这样的东西。

<int:gateway id="toRest" default-request-channel="foo" service-interface="ToRest" />

<int:channel id="foo" />

<int-http:outbound-gateway id="out" request-channel="foo"
    http-method="GET"
    url="http://localhost:8983/solr/ccy/query?q=id:{currency}&amp;wt=json">
        <int-http:uri-variable name="currency" expression="headers['currency']"/>
</int-http:outbound-gateway>

ToRest是一个Java接口,其方法类似于String toRest(String in);将ToRest实例注入控制器,只发送一个空字符串“”。

但是,我认为网址中间的#会给您带来麻烦。

编辑:

添加了uri-variable - 表达式可以是任何SpEL表达式,例如payload.currency(在消息有效负载上调用getCurrency()); headers['currency'];或@someBean.determineCurrency(payload);等等。

您的网关可以填充标题...

String result(@Payload String payload, @Header("currency") String currency);

当然,由于您只进行GET,您只需在有效负载中设置货币,然后使用expression="payload"

答案 1 :(得分:0)

关于哈希标记,请查看:http://en.wikipedia.org/wiki/Fragment_identifier

  

片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端的,没有来自Web服务器的参与