Spring Integration:TCP禁用respnse读取

时间:2016-04-04 06:40:27

标签: java spring tcp spring-integration

我有以下要求

  
      
  1. 连接到套接字(TCP)
  2.   
  3. 发送初始化消息[服务器没有响应]
  4.   
  5. 检查连接是否有效,如果是,则发送轮询消息。
  6.   
  7. 如果有响应过程。
  8.   

我正在尝试为TCP连接使用Spring集成,但是当我尝试执行第二步时,框架会等待响应。有没有办法将其配置为不等待步骤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.

1 个答案:

答案 0 :(得分:0)

网关是请求/响应机制(一个请求,一个响应)。您已将$(document).ready(function(){ // put this next variable in the global scope (window.) so you can // access it from unload window.unsaved == false; $('input').keydown(function(){ window.unsaved == true; }) }) $( window ).unload(function() { if(window.unsaved == true){ alert('You have unsaved work.'); } }); 设置为single-use,因此即使第一个返回响应,第二个也会转到另一个套接字。

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

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