什么是相当于tcp-outbound-gateway的java配置?

时间:2015-03-01 17:11:37

标签: java spring spring-integration spring-java-config

我有以下spring-integration XML配置

<ip:tcp-outbound-gateway id="outboundClient"
        request-channel="requestChannel"
        reply-channel="string2ObjectChannel"
        connection-factory="clientConnectionFactory"
        request-timeout="10000"
        reply-timeout="10000"/>

如何编写与上述相同的Java配置? 我认为相当于

@Bean
public TcpOutboundGateway outboundClient() {
    TcpOutboundGateway tcpOutboundGateway = new TcpOutboundGateway();
    tcpOutboundGateway.setConnectionFactory(clientConnectionFactory());
    tcpOutboundGateway.setRequiresReply(true);
    tcpOutboundGateway.setReplyChannel(string2ObjectChannel());
    tcpOutboundGateway.setRequestTimeout(10000);
    tcpOutboundGateway.setSendTimeout(10000);
    return tcpOutboundGateway;
}

但我找不到设置请求频道的方法。 任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:3)

您的配置看起来不错,但您应该知道任何Spring Integration Consumer组件都包含两个主要对象:MessageHandler(在您的情况下为TcpOutboundGateway)和EventDrivenConsumer用于{{ 1 {}} subscriableinput-channel如果PollingConsumerinput-channel

所以,既然你已经拥有第一个,处理部分,你需要另一个消耗。为此,Spring Integration建议使用端点注释标记Pollable

@Bean

请参阅Spring Integration Reference Manual

中的详情

但是,为了允许这样的注释过程(或任何其他Spring Integration基础结构),您必须使用@Bean @ServiceActivator(inputChannel = "requestChannel") public TcpOutboundGateway outboundClient() { 标记@Configuration

还要考虑使用Spring Integration Java DSL从JavaConfig获得更多收益。