Я пытаюсь добиться рукопожатия UDP с компонентом верблюда netty4. При получении приветственного сообщения приложение пометит флаг в приветственном сообщении как ACKed и отправит его обратно отправителю (processRoute).
Приведенный ниже маршрут таймера имитирует периодическое приветственное сообщение, отправляемое с UDP_REMOTE нашему приложению (UDP_LOCAL). И checkRoute проверяет, получено ли приветственное сообщение ACKed отправителем.
С приведенным ниже кодом похоже, что компонент вызывает бесконечный цикл обратной связи. Задействованы основные библиотеки: camel-spring-boot (2.16.1) и spring-boot (1.3.2.RELEASE). Я знаю, что это должно быть моя ошибка. Было бы здорово, если бы кто-нибудь показал мне правильный способ сделать это. Заранее спасибо.
private static final String UDP_LOCAL = "netty4:udp://localhost:4466";
private static final String UDP_REMOTE = "netty4:udp://localhost:8899";
private static final AtomicInteger counter = new AtomicInteger();
private final class PrintProcessor implements Processor {
private final String name;
public PrintProcessor(String name) {
this.name = name;
}
@Override
public void process(Exchange exchange) throws Exception {
byte[] body = exchange.getIn().getBody(byte[].class);
System.err.println(name + "\t[b]==>" + new String(body));
}
}
@Bean
public RouteBuilder RouteBuilder() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("timer://poller?period=5s").process(exchange -> {
exchange.getIn().setBody("Hello" + counter.incrementAndGet());
System.err.println("Sending Hello...");
}).to(UDP_LOCAL);
from(UDP_LOCAL).id("processRoute").process(new PrintProcessor("processRoute")).to(UDP_REMOTE);
from(UDP_REMOTE).id("checkRoute").process(new PrintProcessor("checkRoute"));
}
};
}
Лог выглядит так
Sending Hello...
processRoute [b]==>Hello1
checkRoute [b]==>Hello1
checkRoute [b]==>Hello1
processRoute [b]==>Hello1
checkRoute [b]==>Hello1
checkRoute [b]==>Hello1
processRoute [b]==>Hello1
checkRoute [b]==>Hello1
checkRoute [b]==>Hello1
processRoute [b]==>Hello1
...