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에서brokerAbrokerB로 재배포 되지 않습니다.
이전 시나리오에서는 요청이 생산자로 전송되기 전에 소비자를 생성하여 의도한 클라이언트가 메시지를 수신하도록 할 수 있습니다. 메시지는 메시지의 상관 관계 ID와 일치하는 필터를 사용하여 사용자에게 즉시 라우팅됩니다. 재배포가 필요하지 않습니다.
추가 리소스
- 클러스터 부하 분산에 대한 자세한 내용은 16.1.1절. “브로커 클러스터에서 메시지 로드의 균형을 조정하는 방법” 을 참조하십시오.