我有以下要求
- 连接到套接字(TCP)
- 发送初始化消息[服务器没有响应]
- 检查连接是否有效,如果是,则发送轮询消息。
- 如果有响应过程。
醇>
我正在尝试为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.
答案 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),仅用于第一次发送,然后将其增加到合理的范围。