我可以使用哪个bean作为http-outbound-gateway的替代方法?

时间:2015-06-16 08:29:01

标签: spring-integration

我正在将spring-integration 3.x更改为4.x. 我应该将每个xml配置更改为java文件。

但是,我找不到可替代的豆子代替以下。

<int-http:outbound-gateway url="http://www.google.com/ig/api?weather={city}"
                           http-method="GET"
                           expected-response-type="java.lang.String"
                           request-factory="requestFactory"
                           request-channel="requestChannel"
                           reply-channel="replyChannel">
    <int-http:uri-variable name="city" expression="payload"/>
</int-http:outbound-gateway>

<bean id="requestFactory"
      class="org.springframework.http.client.SimpleClientHttpRequestFactory">
    <property name="connectTimeout" value="5000"/>
    <property name="readTimeout"    value="5000"/>
</bean>

我尝试使用HttpRequestExecutingMessageHandler。

@Bean
    HttpRequestExecutingMessageHandler httpGateway() {
        HttpRequestExecutingMessageHandler gateway 
        = new HttpRequestExecutingMessageHandler(gitlabUri);
        gateway.setOutputChannel(requestChannel());
        return gateway;
    }

但它没有请求通道作为参数。

帮帮我......

1 个答案:

答案 0 :(得分:2)

XML解析器为出站端点创建2个bean;一个Consumer bean(事件驱动或可轮询,取决于输入通道类型)和消息处理程序,它被注入到使用者中。 ConsumerEndpointFactoryBean用于生成适当的消费者。

所以,您可以自己连接2个bean,或者使用@ServiceActivator注释,框架将负责为您创建消费者......

@ServiceActivator(input-channel="toHttp")
@Bean
HttpRequestExecutingMessageHandler httpGateway() {
    HttpRequestExecutingMessageHandler gateway 
        = new HttpRequestExecutingMessageHandler(gitlabUri);
    gateway.setOutputChannel(requestChannel());
    return gateway;
}

有关详细信息,请参阅the reference manual。它使用HTTP端点作为示例。