10.2.3. AMQP 메시지 차단

이 장의 앞부분에서 설명한 대로 코어 프로토콜은 생산자 창 크기 흐름 제어 시스템을 사용합니다. 이 시스템에서는 크레딧이 바이트를 나타내고 생산자에 할당됩니다. 생산자가 메시지를 전송하려는 경우 메시지를 보내기 전에 메시지의 크기를 수용할 수 있는 충분한 크레딧이 있을 때까지 기다려야 합니다.

AMQP 흐름 제어 크레딧은 바이트를 나타내지 않지만 메시지 크기에 관계없이 생산자가 보낼 수 있는 메시지 수를 나타냅니다. 따라서 AMQP 클라이언트에 대한 일부 시나리오에서는 주소의 max-size-bytes 를 상당히 초과할 수 있습니다.

이 상황을 관리하려면 address-settingmax-size-bytes-reject-threshold 요소를 추가하여 주소 크기에 상한을 바이트 단위로 지정합니다. 이 상한에 도달하면 브로커는 AMQP 메시지를 거부합니다. 기본적으로 max-size-bytes-reject-threshold-1 또는 제한 없음으로 설정됩니다.

블록 AMQP 메시지에 브로커 구성

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

절차

  • 아래 구성 예제에서는 my.amqp.blocking.queue 주소로 라우팅되는 AMQP 메시지에 최대 300000 바이트의 최대 크기를 적용합니다.

    <configuration>
      <core>
        ...
        <address-settings>
           ...
           <address-setting match="my.amqp.blocking.queue"> 1
              <max-size-bytes-reject-threshold>300000</max-size-bytes-reject-threshold>  2
           </address-setting>
        </address-settings>
      </core>
    </configuration>
1
위의 구성은 my.amqp.blocking.queue 주소에서 참조하는 모든 큐에 적용됩니다.
2
브로커는 max-size-bytes-reject-threshold300000 바이트보다 큰 경우 이 주소와 일치하는 큐로 전송된 AMQP 메시지를 거부하도록 구성됩니다. 이 요소는 K,MbGB 와 같은 바이트 표기법을 지원하지 않습니다.

추가 리소스