0

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

所以计划是提供一个 ReferenceData 控制器,它调用一个服务,该服务又将通过 spring 集成调用 Solr。但我需要响应是同步的。

我查看了提供的示例 Spring Integration 代码并遇到了 rest-http 示例。但它想在我的头上。那么我该如何做到这一点,任何代码示例都会很有用。

谢谢总经理

4

2 回答 2

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 实例注入您的控制器,然后发送一个空字符串“”。

但是,我认为#在 URL 中间会给你带来麻烦。

编辑:

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

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

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

当然,由于您只是在执行 GET,因此您可以简单地在有效负载中设置货币并使用expression="payload".

于 2013-05-24T14:32:45.990 回答
0

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

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

于 2013-05-24T17:19:25.497 回答