10.2.2. 메시지 차단

두 개 이상의 생산자가 동일한 주소와 연관될 수 있으므로 브로커가 실제로 사용 가능한 것보다 더 많은 크레딧을 할당할 수 있습니다. 그러나 브로커가 사용 가능한 것보다 더 많은 크레딧을 전송하지 못하도록하는 모든 주소에 최대 크기를 설정할 수 있습니다.

기본 구성에서는 각 주소에 대해 전역 최대 크기가 100Mb입니다. 주소가 가득 차면 브로커는 큐로 라우팅하지 않고 페이징 저널에 추가 메시지를 작성합니다. 페이징 대신 이전 메시지가 사용될 때까지 클라이언트측에서 더 많은 메시지 전송을 차단할 수 있습니다. 이러한 방식으로 생산자 흐름 제어를 차단하면 브로커가 한 번에 처리할 수 있는 것보다 더 많은 메시지를 전송하므로 브로커가 메모리 부족이 발생하지 않습니다.

구성에서 생산자 흐름 제어 차단은 address-setting 별로 관리됩니다. 구성은 주소에 등록된 모든 큐에 적용됩니다. 즉, 해당 주소에 바인딩된 모든 큐의 총 메모리는 max-size-bytes 용으로 지정된 값으로 제한됩니다.

참고

차단은 프로토콜에 따라 다릅니다. AMQ Broker에서 AMQP, OpenWire 및 Core Protocol은 생산자 흐름 제어를 지원합니다. AMQP는 흐름 제어를 다르게 처리합니다. 자세한 내용은 AMQP를 사용하여 흐름 제어 차단 을 참조하십시오.

주소의 최대 크기 구성

설정된 최대 바이트 수보다 큰 경우 메시지를 차단하도록 브로커를 구성하려면 새 addres-setting 구성 요소를 BROKER_INSTANCE_DIR/etc/broker.xml 에 추가합니다.

절차

  • 아래 구성 예에서 address-settingBLOCK 생산자로 설정되고 최대 300000 바이트에 도달한 후 메시지 전송을 통해 메시지가 전송됩니다.
<configuration>
  <core>
    ...
    <address-settings>
       <address-setting match="my.blocking.queue"> 1
          <max-size-bytes>300000</max-size-bytes>  2
          <address-full-policy>BLOCK</address-full-policy> 3
       </address-setting>
    </address-settings>
  </core>
</configuration>
1
위의 구성은 my.blocking.queue 주소에서 참조하는 모든 큐에 적용됩니다.
2
최대 크기를 300000 바이트로 설정합니다. 브로커는 메시지가 max-size-bytes 를 초과하는 경우 주소로 전송되는 생산자를 차단합니다. 이 요소는 "K", "Mb" 및 "GB"와 같은 바이트 표기법을 지원합니다.
3
생산자 흐름 제어를 차단할 수 있도록 address-full-policyBLOCK 으로 설정합니다.