10장. 흐름 제어


흐름 제어는 생산자와 소비자가 그 사이의 데이터 흐름을 제한함으로써 과부하되지 않도록 합니다. AMQ Broker를 사용하면 소비자와 생산자 모두에 대한 흐름 제어를 구성할 수 있습니다.

10.1. 생산자 흐름 제어

소비자 창 기반 흐름 제어와 유사한 방식으로 AMQ Broker는 생산자에서 전송된 데이터 양을 브로커로 제한하여 브로커가 너무 많은 데이터로 과부하되지 않도록 할 수 있습니다. 생산자의 경우 창 크기에 따라 한 번에 진행 중일 수 있는 바이트 수가 결정됩니다.

10.1.1. 메시지 차단

둘 이상의 생산자가 동일한 주소와 연관될 수 있기 때문에 브로커가 실제로 사용 가능한 것보다 모든 생산자에 걸쳐 더 많은 단위를 할당할 수 있습니다. 그러나 브로커가 사용 가능한 것보다 더 많은 단위를 보내는 것을 방해하는 모든 주소에 최대 크기를 설정할 수 있습니다.

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

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

참고

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

주소의 최대 크기 구성

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

절차

  • 아래 설정 예에서 address-setting 은 최대 300000 바이트에 도달한 후 메시지를 전송하지 못하도록 BLOCK 생산자로 설정됩니다.
<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 으로 설정하여 생산자 흐름 제어를 차단할 수 있습니다.

10.1.2. AMQP 메시지 차단

이 장의 앞에서 설명한 대로 Core Protocol은 생산자 창 크기 흐름 제어 시스템을 사용합니다. 이 시스템에서 단위는 바이트를 나타내며 생산자에 할당됩니다. 프로듀서가 메시지를 보내려는 경우 메시지를 보내기 전에 메시지 크기를 수용하기에 충분한 지분을 가질 때까지 기다려야 합니다.

AMQP 흐름 제어 버스트는 바이트를 나타내지 않지만, 대신 메시지 크기에 관계없이 생산자가 보낼 수 있는 메시지의 수를 나타냅니다. 따라서 AMQP 클라이언트가 max-size-bytes 의 주소를 크게 초과하는 경우도 있습니다.

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

AMQP 메시지를 차단하도록 브로커 구성

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

절차

  • 아래 구성 예제에서는 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 와 같은 바이트 표기법을 지원하지 않습니다.

추가 리소스

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동