对于最新稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

TCP连接拦截器

你可以配置连接工厂,引用TcpConnection拦截工厂链. 你可以使用拦截器为连接添加行为,如协商、安全及其他选项。目前框架没有提供拦截器,但请参见拦截共享连接测试在源代码仓库中举个例子。spring-doc.cadn.net.cn

你好世界拦截者测试用例的使用方式如下:spring-doc.cadn.net.cn

拦截器首先配置为客户端连接工厂。当第一条消息通过拦截的连接发送时,拦截者通过该连接发送“Hello”,并期望收到“world!”。当这种情况发生时,协商完成,原始消息被发送。此外,使用相同连接的消息无需额外协商即可发送。spring-doc.cadn.net.cn

当配置为服务器连接工厂时,拦截器要求第一个消息为“Hello”,如果是,则返回“world!”。否则,它会抛出异常,导致连接关闭。spring-doc.cadn.net.cn

Tcp连接方法被拦截。拦截器工厂为每个连接创建拦截实例。如果拦截器是有状态的,工厂应为每个连接创建一个新实例。如果没有状态,同一个拦截器可以包装每个连接。拦截器工厂被添加到拦截器工厂链的配置中,你可以通过设置拦截机工厂属性。 拦截机必须延伸TcpConnection拦截支持. 工厂必须实施TcpConnection拦截工厂接口。TcpConnection拦截支持具有直通方法。通过扩展该类,你只需实现你想要拦截的方法。spring-doc.cadn.net.cn

以下示例展示了如何配置连接拦截器工厂链:spring-doc.cadn.net.cn

<bean id="helloWorldInterceptorFactory"
    class="o.s.i.ip.tcp.connection.TcpConnectionInterceptorFactoryChain">
    <property name="interceptors">
        <array>
            <bean class="o.s.i.ip.tcp.connection.HelloWorldInterceptorFactory"/>
        </array>
    </property>
</bean>

<int-ip:tcp-connection-factory id="server"
    type="server"
    port="12345"
    using-nio="true"
    single-use="true"
    interceptor-factory-chain="helloWorldInterceptorFactory"/>

<int-ip:tcp-connection-factory id="client"
    type="client"
    host="localhost"
    port="12345"
    single-use="true"
    so-timeout="100000"
    using-nio="true"
    interceptor-factory-chain="helloWorldInterceptorFactory"/>