2013-03-30 6 views
3

REST 인터페이스 뒤에 메시지 생성자를 구현하려고합니다. 메시지 생성자는 요청/응답 패턴을 사용합니다. Camel 제작자를위한 문서를 읽을 때 응용 프로그램 당 하나의 제작자 만 만들어야한다는 점에 유의하십시오.Camel ActiveMQ 제작자 템플릿 스레드는 안전합니까?

여러 스레드에서 send 메소드를 호출 할 수 있도록 제작자 스레드가 안전합니까? 여러 동시 요청이 관련 응답을 기다리고있을 때 제대로 작동합니까? Spring, Tomcat 및 Jersey를 사용하여 가장 잘 구현되는 방법은 무엇입니까?

감사합니다.

답변

3

예 Apache Camel의 제작자 및 사용자 템플릿은 모두 스레드로부터 안전합니다.

예/답장이 제대로 작동합니다. 구현 방법은 Camel 라우팅 엔진과 사용되는 구성 요소 간의 혼합입니다.

예 : REST와 JMS는 조금 다르게 작동합니다. JMS는 회신을 수집하는 데 별도의 메시지 대기열을 사용합니다. 회신 메시지를 상관시키는 데 사용되는 JMSCorrelationID가 있습니다.

여기서 REST는 일반적으로 HTTP의 동기화 특성으로 인해 동기화 호출입니다. 하지만 일부는 camel-jetty, camel-ahc 등과 같은 http 클라이언트에서 비동기 통신을 지원하기 때문에 기본 구성 요소에 따라 달라집니다.

+0

클라우스는 저에게 그것이 맞았지만 물론, 나는 편집증적인 금융 시스템 세계에서 일하고 있습니다. 네, 저는 전통적인 REST 지향 아키텍처와 Camel/ActiveMQ 사이의 요청 응답의 차이를 알고있었습니다. 내 REST 인터페이스는 실제로 백그라운드에서 통합 시스템의 성능 및 헤더에 표시된 클라이언트의 설정에 따라 동기화 및 비동기 응답 유형을 혼합하여 사용합니다. Camel은 당신의 책 [link] (http://amzn.com/1935182366)처럼 훌륭합니다. 고맙습니다. –

+0

ProducerTemplate 및 ConsumerTemplate에서 javadoc을 스레드 안전성에 대한 참고로 업데이트했습니다. 사람들은 javadoc API –

+0

에서이 정보를 쉽게 찾을 수 있습니다. 안녕하세요 @ClausIbsen, 여러 개의 인터리브 된 스레드를 사용하여 producertemplate.requestBodyAndHeaders ("http4 : // host : port/endpoint"..)를 호출하면 PoolingHttpClientConnectionManager가 많이 생성됩니다. . 이것은 프로듀서 템플릿이 정말로 스레드 안전하다고 생각하게 만듭니다. –

관련 문제