如何发送TCP请求的回复(spring-integration)?

时间:2017-05-10 22:30:45

标签: java spring sockets tcp spring-integration

我需要类似于Can not send response for UDP message的类似内容 但对于TCP。所以客户端发送消息和TCP服务器可以像OK那样发回响应。对于TCP socket-expression =" @inbound.socket"和destination-expression =" headers [' ip_packetAddress']"不能使用。

这就是我的配置现在的样子:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration"
    xmlns:int-ip="http://www.springframework.org/schema/integration/ip"
    xmlns:int-event="http://www.springframework.org/schema/integration/ip"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
        http://www.springframework.org/schema/integration/ip http://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd">

  <int:channel id="tcpSend"/>

  <int-ip:tcp-connection-factory id="client" type="client"/>

  <int-ip:tcp-connection-factory id="server" type="server" host="localhost" port="1234"/>

  <int-ip:tcp-outbound-channel-adapter id="tcpOutbound" channel="tcpSend"
                                   connection-factory="client"/>

  <int-ip:tcp-inbound-channel-adapter id="tcpInbound" channel="tcpReceive"
                                  connection-factory="server"/>

  <int:service-activator id="tcpHandler" input-channel="tcpReceive" output-channel="tcpSend"
                         ref="listener"/>
</beans>

1 个答案:

答案 0 :(得分:3)

如果是TCP,则更容易,因为您可以使用Inbound Gateway

关于此事的样本位于官方存储库中:https://github.com/spring-projects/spring-integration-samples/tree/master/basic/tcp-client-server