2016-04-04 24 views
0

我有以下要求Spring集成:TCP禁用respnse阅读

  1. 与插座(TCP)
  2. 发送初始化消息[不会有任何来自服务器的响应]
  3. 检查该连接是活的,如果是,则发送轮询消息。
  4. 如果有响应过程它。

我想用户Spring的集成TCP连接,但是当我尝试执行第二步框架等待响应。有没有办法配置它不等待第2步中的响应?

以下是Spring配置:

<int:gateway default-request-channel="msOutbound" 
    service-interface="com.home.tcp.UserService" id="gw" /> 

<int-ip:tcp-outbound-gateway id="tcpObGw" 
    connection-factory="client" request-channel="msOutbound" 
    /> 

<int-ip:tcp-connection-factory id="client" 
    type="client" deserializer="serDeSer" serializer="serDeSer" 
    host="remoteServer" port="valid port" single-use="true" /> 

<bean id="serDeSer" 
    class="org.springframework.integration.ip.tcp.serializer.ByteArrayStxEtxSerializer" /> 

Java代码:

service.send("init msg"); // The program exits with no response exception. 
service.send("polling message"); //Never executed. 

回答

0

网关是一个请求/响应机制(一个请求,一个应答)。你有single-use设置为true,所以即使第一个返回一个响应,第二个将在另一个套接字上。

对于您的情况,您需要将single-use设置为false,并在第一个send周围放置一个try/catch,因为您预期会出现异常。

为了改善时间安排,您应该将网关上的remoteTimeout设置为非常小的值(0),仅用于第一次发送,然后增加一些合理的值。