Akka + Camel + Context-Provider

时间:2016-11-02 15:09:00

标签: apache-camel akka netty

亲爱的Camel / Akka / Netty大师赛!

我创建了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");
    }

}

如果为netty组件配置解码器,我已经创建了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配置为使用文本行时,一切都按预期工作。

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题。也许它有助于某人:

发布channelRead事件是必要的:

ctx.fireChannelRead(msg);