11.6. 선택적 소비자


11.6.1. 개요

그림 11.5. “선택적 소비자 패턴” 에 표시된 선택적 소비자 패턴은 수신 메시지에 필터를 적용하여 특정 선택 기준을 충족하는 메시지만 처리하는 소비자를 설명합니다.

그림 11.5. 선택적 소비자 패턴

선택적 소비자 패턴

다음 방법 중 하나를 사용하여 Apache Camel에서 선택적 소비자 패턴을 구현할 수 있습니다.

11.6.2. JMS 선택기

JMS 선택기는 JMS 헤더 및 JMS 속성을 포함하는 서술자 표현식입니다. 선택기가 true 로 평가되면 JMS 메시지가 소비자에 도달할 수 있으며 선택기가 false 로 평가되면 JMS 메시지가 차단됩니다. 예를 들어 큐의 메시지를 사용하고 국가 코드 속성이 US 인 메시지만 선택하려면 다음 Java DSL 경로를 사용할 수 있습니다.

from("jms:selective?selector=" + java.net.URLEncoder.encode("CountryCode='US'","UTF-8")).
    to("cxf:bean:replica01");

쿼리 옵션 구문 분석 문제를 방지하려면 선택기 문자열인 selector 문자열( Code='US' )이 URL로 인코딩되어야 합니다( UTF-8 문자 사용). 이 예에서는 JMS 속성인 Code 가 보낸 사람에 의해 설정되었다고 가정합니다. JMS 선택기에 대한 자세한 내용은 “JMS 선택기” 을 참조하십시오.

참고

선택기가 JMS 큐에 적용되는 경우 선택되지 않은 메시지는 큐에서 남아 있으며 동일한 큐에 연결된 다른 소비자가 사용할 수 있습니다.

11.6.3. ActiveMQ의 JMS 선택기

ActiveMQ 엔드포인트에 JMS 선택기를 정의할 수도 있습니다. 예를 들면 다음과 같습니다.

from("acivemq:selective?selector=" + java.net.URLEncoder.encode("CountryCode='US'","UTF-8")).
    to("cxf:bean:replica01");

자세한 내용은 ActiveMQ: JMS SelectorsActiveMQ Message Properties 를 참조하십시오.

11.6.4. 메시지 필터

소비자 끝점에서 선택기를 설정할 수 없는 경우 대신 필터 프로세서를 경로에 삽입할 수 있습니다. 예를 들어 다음과 같이 Java DSL을 사용하여 미국 국가 코드가 있는 메시지만 처리하는 선택적 소비자를 정의할 수 있습니다.

from("seda:a").filter(header("CountryCode").isEqualTo("US")).process(myProcessor);

다음과 같이 XML 구성을 사용하여 동일한 경로를 정의할 수 있습니다.

<camelContext id="buildCustomProcessorWithFilter" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="seda:a"/>
    <filter>
      <xpath>$CountryCode = 'US'</xpath>
      <process ref="#myProcessor"/>
    </filter>
  </route>
</camelContext>

Apache Camel 필터 프로세서에 대한 자세한 내용은 8.2절. “메시지 필터” 을 참조하십시오.

주의

메시지 필터를 사용하여 JMS 대기열에서 메시지를 선택합니다. 필터 프로세서를 사용하는 경우 차단된 메시지는 간단히 삭제됩니다. 따라서 대기열에서 메시지가 사용되는 경우(각 메시지를 한 번만 사용할 수 있습니다. 11.4절. “경쟁 소비자”참조) 차단된 메시지는 전혀 처리되지 않습니다. 이는 원하는 동작이 아닐 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.