2016-11-02 4 views
0

친애하는 Camel/Akka/Netty Masters! 내가 거기에 메시지를 보낼 때, 이제Akka + Camel + Context-Provider

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; 
    } 
} 

:

그물코 구성 요소에 대한 디코더를 구성 할 경우
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 :

은 내가 TCP 연결을 소비하는 UntypedConsumerActor 만든 onReceive 메소드를 호출하지 않습니다. 왜? DefaultContextProvider를 설정하고 textline을 사용하도록 netty를 구성하면 모든 것이 예상대로 작동합니다.

답변

1

좋아, 문제가 발생했습니다. 아마 도움이 사람 :

ctx.fireChannelRead(msg); 
:

화재 channelRead 이벤트 necesarry이다