15장. 메시지 필터링

AMQ Broker는 SQL 92 표현식 구문의 하위 집합을 기반으로 강력한 필터 언어를 제공합니다. 필터 언어는 JMS 선택기에 사용된 것과 동일한 구문을 사용하지만 사전 정의된 식별자는 다릅니다. 아래 표에는 AMQ Broker 메시지에 적용되는 식별자가 나열되어 있습니다.

식별자속성

AMQPriority

메시지의 우선 순위입니다. 메시지 우선순위는 0 부터 9 까지의 유효한 값이 있는 정수입니다. 0 이 가장 낮은 우선순위이고, 9 가 가장 높은 우선순위입니다.

AMQExpiration

메시지의 만료 시간입니다. 값은 긴 정수입니다.The value is a long integer.

AMQDurable

메시지가 내구성인지 아니면 내구성이 있는지 여부입니다. 값은 문자열입니다. 유효한 값은 DURABLE 또는 NON_DURABLE 입니다.

AMQTimestamp

메시지를 생성할 때의 타임 스탬프입니다. 값은 긴 정수입니다.The value is a long integer.

AMQSize

메시지의 encodeSize 속성 값입니다. encodeSize 값은 메시지가 저널에 사용되는 공간(바이트)입니다. 브로커가 메시지를 인코딩하기 위해 이중 바이트 문자 세트를 사용하므로 메시지의 실제 크기는 encodeSize 의 절반입니다.

코어 필터 식에 사용되는 다른 식별자는 메시지의 속성으로 간주됩니다. JMS 메시지의 선택기 구문에 대한 문서는 Java EE API 를 참조하십시오.

15.1. 필터를 사용하도록 대기열 구성

BROKER_INSTANCE_DIR/etc/broker.xml 에서 구성한 큐에 필터를 추가할 수 있습니다. 필터 식과 일치하는 메시지만 큐에 들어갑니다.

절차

  • 필터 요소를 원하는 큐에 추가하고 요소 값으로 적용하려는 필터를 포함합니다. 아래 예제에서는 NEWS='tech 필터가 대기열 technologyQueue 에 추가됩니다.

    <configuration>
      <core>
        ...
        <addresses>
            <address name="myQueue">
               <anycast>
                  <queue name="myQueue">
                    <filter string="NEWS='technology'"/>
                  </queue>
               </anycast>
            </address>
         </addresses>
       </core>
    </configuration>