繁体   English   中英

如何在Spring Integration中扩展TCP出站网关以仅接收消息

[英]How to extend TCP Outbound gateway to just receive messages in Spring Integration

我正在开发一个Web应用程序,该应用程序通过Spring Integration支持TCP连接。 它有两个功能。

  1. 向服务器发送消息并一次收到服务器的答复
  2. 只是从服务器接收消息

(服务器上的应用程序不是由Spring Integration开发的。)

在这种情况下,应使用TCP适配器,我需要提供以协作TCP出站和入站通道适配器。 但是,我的应用程序有一些限制。

  1. 此应用程序没有数据库。
  2. 消息的有效载荷格式已指定。 (这意味着我无法将任何相关数据(例如,交易ID)添加到有效负载中。

因此,我认为协作TCP出站和入站通道适配器很困难。 然后,我计划扩展TCP出站网关以添加仅接收消息的功能。 我应该如何扩展它? (或者您还有其他想法吗?)

提前致谢。

如果您可以确定消息类型,则应该可以执行以下操作...

public class ExtendedTcpOutpboundGateway extends TcpOutboundGateway {

    private final MessageChannel unsolicitedMessageChannel;


    public ExtendedTcpOutpboundGateway(MessageChannel unsolicitedMessageChannel) {
        this.unsolicitedMessageChannel = unsolicitedMessageChannel;
    }

    @Override
    public boolean onMessage(Message<?> message) {
        if (isUnsolicitedMessage(message)) {
            this.messagingTemplate.send(this.unsolicitedMessageChannel, message);
            return false;
        }
        else {
            return super.onMessage(message);
        }
    }

    private boolean isUnsolicitedMessage(Message<?> message) {
        // TODO Add logic here to determine message type
        return false;
    }

}

如果您无法分辨出差异,则不清楚如何实现您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM