178.14.2. request-reply over JMS 및 전용 고정 응답 대기열 사용

Camel 2.9에서 사용 가능

이전 예에서 Camel은 "bar"라는 고정 응답 대기열이 공유되었으므로 JMSSelector 를 사용하여 예상한 응답 메시지만 사용합니다. 그러나 JMS selectos가 느리기 때문에 이 작업을 수행하는 데 어려움이 있습니다. 또한 응답 대기열의 소비자는 새 JMS 선택기 ID로 업데이트하는 속도가 느립니다. 실제로 receiveTimeout 옵션이 시간 초과될 때만 업데이트됩니다. 기본값은 1초입니다. 따라서 이론적으로 응답 메시지는 1초 정도 소요될 수 있습니다. 반면 고정 응답 대기열이 Camel 응답 소비자에만 독점적인 경우 JMS 선택기를 사용하지 않도록 방지할 수 있으므로 더 성능이 향상됩니다. 사실 임시 대기열을 사용하는 것처럼 빠릅니다. 따라서 Camel 2.9 에서는 다음의 예와 같이 Camel에 응답 큐가 독점적이라는 것을 알 수 있는 ReplyToType 옵션을 도입했습니다.

from(xxx)
.inOut().to("activemq:queue:foo?replyTo=bar&replyToType=Exclusive")
.to(yyy)

큐는 각 끝점에 독점적이어야 합니다. 따라서 두 개의 경로가 있는 경우 다음 예제와 같이 각각 고유한 응답 대기열이 필요합니다.

from(xxx)
.inOut().to("activemq:queue:foo?replyTo=bar&replyToType=Exclusive")
.to(yyy)

from(aaa)
.inOut().to("activemq:queue:order?replyTo=order.reply&replyToType=Exclusive")
.to(bbb)

클러스터형 환경에서 실행되는 경우에도 적용됩니다. 그런 다음 클러스터의 각 노드는 고유한 응답 대기열 이름을 사용해야 합니다. 그렇지 않으면 클러스터의 각 노드가 다른 노드에서 응답하려는 메시지를 선택할 수 있습니다. 클러스터형 환경의 경우 대신 공유 응답 대기열을 사용하는 것이 좋습니다.