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-setting
은BLOCK
생산자로 설정되고 최대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>