Spring integration TcpMessageMapper-使用故障切换客户端连接工厂时,来自连接x.x.x.x:xxxx:0e07144c-456e-4e31-a93c-66926b8f7018的无效负载

Spring integration TcpMessageMapper-使用故障切换客户端连接工厂时,来自连接x.x.x.x:xxxx:0e07144c-456e-4e31-a93c-66926b8f7018的无效负载,spring-integration,Spring Integration,如果服务器在A和B之间切换,我会遇到问题。如果A关闭,B打开。使用FailoverClient ConnectionFactory,我可以在向服务器发送任何请求时看到以下警告 警告o.s.i.i.t.c.TcpMessageMapper-来自连接cisco-x.x.x:42017:58773:0e07144c-456e-4e31-a93c-66926b8f7018的无效负载 我将FailoverClient ConnectionFactory用于其中两台服务器。如果fist服务器已启动并正在运行

如果服务器在A和B之间切换,我会遇到问题。如果A关闭,B打开。使用FailoverClient ConnectionFactory,我可以在向服务器发送任何请求时看到以下警告

警告o.s.i.i.t.c.TcpMessageMapper-来自连接cisco-x.x.x:42017:58773:0e07144c-456e-4e31-a93c-66926b8f7018的无效负载

我将FailoverClient ConnectionFactory用于其中两台服务器。如果fist服务器已启动并正在运行,它将正常工作。但如果切换到B服务器,则无法工作

以下是代码片段:

@Bean
    public FailoverClientConnectionFactory getFailoverClientConnectionFactory() throws CiscoConnectionFailureException 
    {
        FailoverClientConnectionFactory failoverCF = new FailoverClientConnectionFactory(underlyingCF());
        failoverCF.setSingleUse(false);
        failoverCF.afterPropertiesSet();

        return failoverCF;
    }

@Bean
    public List<AbstractClientConnectionFactory> underlyingCF() throws CiscoConnectionFailureException 
    {

            List<ServerInfo> processServers = mConfigurationService.getProcesservers();
            List<AbstractClientConnectionFactory> factories = new ArrayList<>();
            boolean connectionSuccessful = false;
            for (ServerInfo serverInfo : processServers) 
            {
                AbstractClientConnectionFactory clientFactory = new TcpNetClientConnectionFactory(
                        serverInfo.getServerAddress(), serverInfo.getServerPort());
                clientFactory.setSingleUse(false);
                clientFactory.setDeserializer(mMessageSerializerDeserializer);
                clientFactory.setSerializer(mMessageSerializerDeserializer);                
                factories.add(clientFactory);

            }
            return factories;

    }

@Bean(name = "outAdapter.client")
    @ServiceActivator(inputChannel = "input", requiresReply = "true")
    public TcpSendingMessageHandler getOutboundChannelAdapter(
            FailoverClientConnectionFactory failoverClientConnectionFactory)
    {
        TcpSendingMessageHandler outboundChannelAdapter = new TcpSendingMessageHandler();
        outboundChannelAdapter.setOrder(OUTBOUND_ADAPTOR_ORDER);
        outboundChannelAdapter.setConnectionFactory(failoverClientConnectionFactory);
        outboundChannelAdapter.setClientMode(true);

        return outboundChannelAdapter;
    }    
@Bean
公共FailoverClient连接工厂GetFailoverClient连接工厂()引发CiscoConnectionFailureException
{
FailoverClientConnectionFactory failoverCF=新的FailoverClientConnectionFactory(underyingcf());
故障切换设置开关(错误);
failoverCF.AfterPropertieSet();
返回故障切换;
}
@豆子
public List underyingcf()引发CiscoConnectionFailureException
{
List processServers=mConfigurationService.getProcessServers();
列表工厂=新的ArrayList();
布尔连接成功=假;
用于(服务器信息服务器信息:processServers)
{
AbstractClientConnectionFactory客户端工厂=新的TcpNetClientConnectionFactory(
serverInfo.getServerAddress(),serverInfo.getServerPort();
clientFactory.setSingleUse(假);
setDeserializer(mMessageSerializerDeserializer);
clientFactory.setSerializer(MMessageSerializerSerializer);
添加(clientFactory);
}
返回工厂;
}
@Bean(name=“outAdapter.client”)
@ServiceActivator(inputChannel=“input”,requiresReply=“true”)
公共TcpSendingMessageHandler getOutboundChannelAdapter(
FailoverClient连接工厂FailoverClient连接工厂)
{
TcpSendingMessageHandler outboundChannelAdapter=新的TcpSendingMessageHandler();
outboundChannelAdapter.setOrder(出站适配器订单);
outboundChannelAdapter.setConnectionFactory(FailoverClient连接工厂);
outboundChannelAdapter.setClientMode(true);
返回外部通道适配器;
}    

有人知道问题出在哪里吗?

你需要显示你的
mMessageSerializerDeserializer
代码-该消息意味着调用
deserialize()
时,反序列化程序返回了
null
,这是永远不会发生的。谢谢Gary。服务器发送的是空响应,所以似乎需要这样做。但我看到的另一件事是,与A服务器和B服务器的连接也没有断开。一段时间后,A服务器启动并与A服务器成功建立连接,但仍在尝试与B服务器连接,这是期望的行为吗?2020-02-25 21:5.FailoverClient连接工厂$FailoverCpcConnection-从org.springframework.integration.ip.tcp.connection获得服务器A:42027:56894:284fd584-5401-41bb-81b6-c02c8e2080c0。TcpNetClientConnectionFactory@2fc49538,主机=服务器A,端口=42027 2020-02-25 21:50:16[池-6-线程-2]调试o.s.i.i.t.c.TcpNetConnection-服务器A:42027:56894:284fd584-5401-41bb-81b6-c02c8e2080c0读取。。。2020-02-25 21:50:16调试o.s.i.i.t.c.ClientModeConnectionManager-Connection 9b8633f1-cab3-4c0b-8735-02848c747160:1已建立2020-02-25 21:50:36[task-scheduler-6]调试o.s.i.i.t.c.FailoverClient连接工厂$FailoverCpcConnection-org.springframework.integration.ip.tcp.Connection。TcpNetClientConnectionFactory@4001d8c1,主机=服务器B,port=42027因java.net失败。ConnectException:连接超时:连接,正在尝试另一个