Ошибка при отправке байтов через TCP: неожиданное сообщение - конечная точка не зарегистрирована с перехватчиком соединения
Я пытаюсь переписать интеграцию.xml в приложении к Java Config с использованием DSL. Мой процесс интеграции выглядит следующим образом:
Communication
объект приходит кsendCommunication
каналsendCommunication
канал направляется на два разных канала- объекты в каждом канале преобразуются в
byte[]
- данные записываются с помощью специального регистратора (прослушивается)
- байты с каждого канала отправляются через TCP с использованием двух разных
TcpSendingMessageHandler
s
Вот часть моего Integration.java, относящаяся к этому потоку (некоторые компоненты, такие как настраиваемый регистратор, пропускаются):
@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 ПРЕДУПРЕЖДЕНИЕ TcpNetConnection:186 - непредвиденное сообщение - конечная точка не зарегистрирована с перехватчиком соединения: IP: ПОРТ:37007:b2347dad-b65c-4686-b016-5ef5ee613bd5 - GenericMessage [payload=byte[267], заголовки ={ip_tcp_remotePort= ПОРТ, ip_connectionId = IP: ПОРТ:37007:b2347dad-b65c-4686-b016-5ef5ee613bd5, IP -адрес ip_localInetAddress=/ локальный IP-адрес, IP -адрес ip_host_1-i6-c6f6706706706406706406706405, отметка времени =1476035565330}]
Буду признателен за любую помощь, эта ошибка вызывает у меня головную боль со вчерашнего дня. Я не мог найти никакого объяснения сам, Google дает мне только этот исходный код на GitHub.
1 ответ
Это всего лишь предупреждение о том, что входящее сообщение (ответ?) Было получено с сервера, на который вы отправили сообщение, и нет адаптера входящего канала, настроенного для обработки входящих сообщений.
Возможно, если вы покажете XML, который вы пытаетесь заменить на конфигурацию Java, кто-то может помочь.