Ошибка при отправке байтов через TCP: Неожиданное сообщение — конечная точка не зарегистрирована в перехватчике соединения

Я пытаюсь переписать Integration.xml в приложении для Java Config с помощью DSL. Мой поток интеграции выглядит следующим образом:

  1. Communication объект приходит на sendCommunication канал
  2. sendCommunication канал маршрутизируется на два разных канала
  3. объекты в каждом канале преобразуются в byte[]
  4. данные регистрируются с помощью пользовательского регистратора (прослушивание проводов)
  5. байты из каждого канала отправляются через TCP с использованием двух разных TcpSendingMessageHandlers

Вот часть моего Integration.java, связанная с этим потоком (некоторые bean-компоненты, такие как пользовательский регистратор, пропущены):

@Bean(name = "sendCommunicationRouter")
public IntegrationFlow routeRoundRobin() {
    return IntegrationFlows.from(getSendCommunication())
                           .route(roundRobinRouter, "route",
                                  s -> s.channelMapping("sendCommunication1",
                                                        "sendCommunication1")
                                        .channelMapping("sendCommunication2",
                                                        "sendCommunication2"))
                           .get();
}

@Bean(name = "sendCommunication")
public MessageChannel getSendCommunication() {
    return getDefaultMessageChannel();
}

@Bean(name = "sendCommunication1")
public MessageChannel getSendCommunication1() {
    return getDefaultMessageChannel();
}

@Bean(name = "sendCommunication2")
public MessageChannel getSendCommunication2() {
    return getDefaultMessageChannel();
}

@Bean(name = "tcpClientOutbound1")
public TcpSendingMessageHandler getTcpClientOutbound1() {
    return getDefaultTcpClientOutbound(getOutboundConnectionFactory1());
}

@Bean(name = "tcpClientOutbound2")
public TcpSendingMessageHandler getTcpClientOutbound2() {
    return getDefaultTcpClientOutbound(getOutboundConnectionFactory2());
}

private TcpSendingMessageHandler getDefaultTcpClientOutbound(TcpNetClientConnectionFactory connectionFactory) {
    TcpSendingMessageHandler handler = new TcpSendingMessageHandler();
    handler.setConnectionFactory(connectionFactory);
    handler.setTaskScheduler(myScheduler);
    handler.setClientMode(true);
    handler.setRetryInterval(DEFAULT_CHANNEL_RETRY_INTERVAL);
    handler.start();
    return handler;
}

@Bean
public IntegrationFlow handleOutgoingCommunication1() {
    return handleOutgoingCommunication(getSendCommunication1(), getTcpClientOutbound1());
}

@Bean
public IntegrationFlow handleOutgoingCommunication2() {
    return handleOutgoingCommunication(getSendCommunication2(), getTcpClientOutbound2());
}

private IntegrationFlow handleOutgoingCommunication(MessageChannel inputChannel, TcpSendingMessageHandler handler) {
    return IntegrationFlows.from(inputChannel)
            .<Communication, byte[]>transform(communication -> communicationTransformer.toBytes(communication))
            .wireTap(getLogger())
            .handle(handler)
            .get();
}

Я получаю эту ошибку, когда пытаюсь отправить данные через канал sendCommunication (IP-адреса скрыты намеренно):

2016-10-09 19:52:45 WARN TcpNetConnection: 186 - Неожиданное сообщение - конечная точка не зарегистрирована в перехватчике соединения: IP:ПОРТ:37007:b2347dad-b65c-4686 -b016-5ef5ee613bd5 — GenericMessage [payload=byte[267], headers={ip_tcp_remotePort=PORT, ip_connectionId=IP:PORT:37007: b2347dad-b65c-4686-b016-5ef5ee613bd5, ip_localInetAddress=/ЛОКАЛЬНЫЙ IP-адрес, ip_address=IP-адрес, id=c6fb70b1-6d06-a909-cfc4-4eac7c715de5, ip_hostname=IP, отметка времени=1476035565330}]

Я был бы признателен за любую помощь, эта ошибка вызывает у меня головную боль со вчерашнего дня. Я сам не мог найти никакого объяснения, google дает мне только этот исходный код на github.


person Jezor    schedule 09.10.2016    source источник


Ответы (1)


Это просто предупреждение о том, что входящее сообщение (ответ?) было получено с сервера, на который вы отправили сообщение, и нет адаптера входящего канала, настроенного для обработки входящих сообщений.

Возможно, если вы покажете XML, который пытаетесь заменить конфигурацией Java, кто-то может помочь.

person Gary Russell    schedule 10.10.2016