2014-07-17 9 views
0

내 애플리케이션에 apache camel을 사용하고 있습니다. 나는 메시지를 보낼 camelContextproducerTemplate를 사용apache camel에서 비동기 이벤트를 사용하는 중에 디버깅 오류가 발생했습니다.

template.send("seda://destination") 

소비자는 다음과 같은 : 이것은 내 dev에 환경에 잘 작동

from("seda://destination").process(new Processor { 
    override def process(exchange: Exchange): Unit = { 
     // some processing 
    } 
}) 

. 그러나 프로덕션에서는 제작자가 메시지를 보냈지 만 소비자에게 컨트롤이 제공되지 않습니다. 로그에 오류가 표시되지 않습니다. 어떤 방법으로 이것을 디버깅 할 수 있습니까? dev 환경과 prod 환경의 유일한 차이점은 인터넷을 통해 서비스와 통신하도록 설정된 프록시를 가지고 있다는 것입니다.

+0

당신은 더 깊이 파고 로그에서 어떤 일이 일어나는지보고, "프록시"가 무엇을하는지 등에 대해 더 자세히 설명해야합니다. 귀하의 정보와 질문은 너무 모호해 도움이되지 않습니다. –

+0

문제가 해결되었습니다. 그것은 httpclient를 사용하고 있었고 프록시를 거치지 않은 다른 라이브러리 때문이었습니다. 타임 아웃 오류를 로깅하지 않아서 문제를 좁힐 수 없었습니다. – coder

+0

@coder 추후 참조를 위해 사용할 수 있도록 아래에 답변을 넣으면 좋을 것입니다. – Namphibian

답변

0

응용 프로그램은 기본적으로 트위터 스트리밍 API를 사용하여 트윗을 가져 왔습니다. 짹짹이 올 때, 나는 낙타의 producerTemplate을 사용하여 메시지를 만들어 내고 있었다. 이 메시지를 가져 오는 소비자가있었습니다. 이 소비자에게는 다른 서비스에 http 호출을 보내는 구성 요소가 있습니다. 그러나 제작 환경에서는 http 프록시를 통해서만 외부 세계와 통신 할 수있었습니다. http 호출을하고 있던 라이브러리는 apache commons httpClient입니다. 프록시가 httpClient에 추가되지 않았기 때문에 소비자는 단지 하나의 트윗을 처리하는 데 어려움을 겪고있었습니다. 나는 처음에 seda을 사용하고 있었다. direct으로 변경하고 내 트윗을 처리 한 후 내 프로세스가 멈추는 것을 보았습니다. 주요 문제는 시간 초과 나 오류를 던지기가 어려웠 기 때문에 문제를 좁히기가 다소 어려웠 기 때문입니다.

+0

감사합니다. 답변을 표시 할 수 있습니까? –