Дорогие мастера Camel/Akka/Netty!Akka + Camel + Контекст-провайдер
Я создал UntypedConsumerActor, который потребляет соединение TCP:
public class TcpEndpoint extends UntypedConsumerActor {
private static final Logger log = LoggerFactory.getLogger(TcpEndpoint.class);
public static Props props = Props.create(TcpEndpoint.class);
@Override
public String getEndpointUri() {
return "netty4:tcp://localhost:8000?decoders=#fdDecoder,#fdHandler";
}
@Override
public void onReceive(Object message) throws Throwable {
log.error("onReceived");
}
}
В случае настройки декодеров для Нетти компоненты, я создал ContextProvider:
public class FDCamelContext implements ContextProvider {
public DefaultCamelContext getContext(ExtendedActorSystem system) {
JndiRegistry registry = new JndiRegistry();
registry.bind("fdDecoder", new FDDecoder());
registry.bind("fdHandler", new FDHandler());
DefaultCamelContext context = new DefaultCamelContext(registry);
return context;
}
}
Теперь, когда я отправить сообщение там нет вызова метода onReceive. Зачем? Когда я устанавливаю DefaultContextProvider и настраиваю netty для использования текстовых строк, все работает так, как ожидалось.