ISO TCP / RFC 1006上的TCP消息

时间:2016-09-29 10:42:04

标签: spring sockets tcp spring-integration rfc

我有一个通过注释配置的Spring Integration项目,其配置与TCP相关:

@Bean
public TcpReceivingChannelAdapter tcpIn(AbstractClientConnectionFactory connectionFactory) {
    TcpReceivingChannelAdapter receiver = new TcpReceivingChannelAdapter();
    receiver.setOutputChannel(fromTcpReceiver());
    receiver.setConnectionFactory(connectionFactory);
    return receiver;
}

@Bean
public AbstractClientConnectionFactory clientFactory() {
    TcpNetClientConnectionFactory factory = new TcpNetClientConnectionFactory(host, port);
    factory.setSoKeepAlive(keepAlive);
    factory.setSoTimeout(timeout);
    return factory;
}

@Bean
public TcpSendingMessageHandler tcpOut(AbstractClientConnectionFactory connectionFactory) {     
    TcpSendingMessageHandler sender = new TcpSendingMessageHandler();
    sender.setConnectionFactory(connectionFactory);
    return sender;
}

在Spring Integration中,通过ISO TCP / RFC 1006封装TCP消息的最佳方法是什么?

基本上,TCP ISO为初始连接添加了一个步骤,但也为每个发送/接收的TCP消息添加了一个额外的头。

我正在阅读文档,但我不知道什么是这种类型的消息丰富和协商的最佳方式。这可以通过Spring Integration实现吗?

我有3个想法:

  • messageBuilderFactory
  • 串行器/解串器
  • TcpConnectionInterceptorFactoryChain

欢迎任何帮助/示例

1 个答案:

答案 0 :(得分:0)

我没有看过RFC,但您可能需要自定义序列化器/反序列化器的组合,以及自定义TcpMessageMapper以将标头映射到/从Spring Integration消息头(s) )。

查看MessageConvertingTcpMessageMapper的示例。