16.4. 메시지 재배포 활성화
브로커 클러스터에서 온디맨드 메시지 부하 분산을 사용하는 경우 메시지를 재배포 하여 메시지를 사용하는 소비자가 없는 큐의 "stuck"이되지 않도록 메시지 재배포를 구성할 수 있습니다.
이 섹션에서는 다음에 대한 정보를 제공합니다.
16.4.1. 메시지 재배포 이해
브로커 클러스터는 로드 밸런싱을 사용하여 클러스터 전체에 메시지 로드를 배포합니다. 클러스터 연결에서 부하 분산을 구성할 때 message-load-balancing
를 ON_DEMAND
로 설정하면 브로커는 소비자와 일치하는 다른 브로커에게만 메시지를 전달합니다. 이 동작을 사용하면 메시지에서 메시지를 사용하는 소비자가 없는 대기열로 이동하지 않습니다. 그러나 메시지가 브로커로 전송된 후 큐에 연결된 소비자가 브로커로 전달되면 해당 메시지는 큐에서 "stuck"되고 사용되지 않습니다. 이 문제는 종종 별명( starvation )이라고 합니다.
메시지 재배포는 소비자가 일치하는 클러스터의 브로커가 없는 큐에서 메시지를 자동으로 다시 배포함으로써 시작할 수 없습니다.
16.4.1.1. 메시지 필터를 사용하여 메시지 재배포의 제한
메시지 재배포 는 소비자가 필터(selector 라고도 함) 사용을 지원하지 않습니다. 필터가 있는 소비자의 일반적인 사용 사례는 상관 관계 ID를 사용하는 요청 시 패턴입니다. 예를 들어 다음 시나리오를 고려하십시오.
-
brokerA
및brokerB
의 두 브로커 클러스터가 있습니다. 각 브로커는0
으로 설정된redistribution-delay
로 구성되며ON_DEMAND
로 설정된message-load-balancing
를 설정합니다. -
brokerA
및brokerB
에는 각각myQueue
라는 큐가 있습니다. -
요청을 기반으로 생산자는
brokerA
에서myQueue
를 대기열에 전송하도록 라우팅되는 메시지를 보냅니다. 메시지에는myCorrelID
라는 상관 관계 ID 속성이 있으며, 값은10
입니다. -
소비자가
myCorrelID=5
필터를 사용하여brokerA
의 큐myQueue
에 연결합니다. 이 필터는 메시지의 상관 관계 ID 값과 일치하지 않습니다. 다른 소비자는
myCorrelID=10
필터를 사용하여brokerB
에서myQueue
를 대기열에 연결합니다. 이 필터는 메시지의 상관 관계 ID 값과 일치합니다.이 경우
brokerB
에 있는 소비자 필터가 메시지와 일치하더라도myQueue
의 소비자가brokerA
brokerB
로 재배포 되지 않습니다.
이전 시나리오에서는 요청이 생산자로 전송되기 전에 소비자를 생성하여 의도한 클라이언트가 메시지를 수신하도록 할 수 있습니다. 메시지는 메시지의 상관 관계 ID와 일치하는 필터를 사용하여 사용자에게 즉시 라우팅됩니다. 재배포가 필요하지 않습니다.
추가 리소스
- 클러스터 부하 분산에 대한 자세한 내용은 16.1.1절. “브로커 클러스터에서 메시지 로드의 균형을 조정하는 방법” 을 참조하십시오.