【发布时间】:2015-06-15 09:10:29
【问题描述】:
我已阅读并遵循http://docs.spring.io/spring-integration/reference/html/ip.html#ip-correlation 中的示例
我有一个弹簧集成服务器
<int-ip:tcp-connection-factory
id="socketserver"
type="server"
port="30124"
using-nio="true"
mapper="mapper"
deserializer="jsonSerializer"
serializer="jsonSerializer"
single-use="false"/>
使用上面的映射器link:
<bean id="mapper"
class="org.springframework.integration.ip.tcp.connection.MessageConvertingTcpMessageMapper">
<constructor-arg name="messageConverter">
<bean class="org.springframework.integration.support.converter.MapMessageConverter">
<property name="headerNames">
<list>
<value>correlationId</value>
<value>sequenceNumber</value>
<value>sequenceSize</value>
</list>
</property>
</bean>
</constructor-arg>
带有入站和出站适配器
<int-ip:tcp-inbound-channel-adapter id="inboundServer"
channel="inputChannel"
connection-factory="socketserver"/>
<int-ip:tcp-outbound-channel-adapter id="outboundServer"
channel="outputChannel"
connection-factory="socketserver"/>
<int:channel id="inputChannel"/>
<int:channel id="outputChannel"/>
<int:service-activator input-channel="inputChannel"
output-channel="outputChannel"
ref="echoService"
method="test"/>
<bean id="echoService" class="com.example.HelloReply" />
我正在向已连接的客户端发送消息
Map<String, Object> headers = new HashMap<String, Object>();
Map msgMap = new HashMap();
msgMap.put("message", "test");
headers.put(IpHeaders.CONNECTION_ID, <the connection id>);
headers.put("correlationId", "boo");
headers.put("sequenceNumber", 100);
headers.put("sequenceSize", 5);
Message<Map> msg = new GenericMessage<Map>(msgMap, headers);
MessagingTemplate template = new MessagingTemplate();
Message reply = template.sendAndReceive(outputChannel, msg);
最后一行永远阻塞,因为我不知道如何从我的旧客户端 (telnet) 正确回复该消息。
发送的消息是:
{"headers":{"sequenceNumber":101,"sequenceSize":5,"correlationId":"boo"},"payload":{"message":"test"}}
我认为这将是correlationId和相同的sequenceNumber匹配所以我尝试从客户端响应到服务器
{"headers":{"sequenceNumber":101,"sequenceSize":5,"correlationId":"boo"},"payload":{"result":"OK"}}
但它被解释为新的入站消息,不被识别为初始发送消息的答案。
那么 sendAndReceive 期望什么,是否有针对该特殊用例的一些文档/规范(sendAndReceive 与非 Spring 客户端的通信)。
【问题讨论】:
标签: java tcp spring-integration