2016-11-02 5 views
0

親愛なるCamel/Akka/Nettyマスター!Akka + Camel + Context-Provider

私は、TCP接続を消費するUntypedConsumerActorを作成しました:場合

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を設定し、texttyを使うようにnettyを設定すると、すべてが期待通りに機能します。

答えて

1

問題が見つかりました。多分それは誰かを助けます:

channelReadイベントを発射するnecesarryです:

ctx.fireChannelRead(msg); 
関連する問題