RabbitMQ용 Amazon MQ용 플러그인
RabbitMQ용 Amazon MQ는 관리 API 및 RabbitMQ 웹 콘솔을 제공하는 RabbitMQ 관리 플러그 인
관리 플러그 인 외에 RabbitMQ용 Amazon MQ는 다음 플러그 인도 지원합니다.
Shovel 플러그 인
Amazon MQ 관리형 브로커는 메시지를 한 브로커 인스턴스의 대기열 및 교환에서 다른 브로커 인스턴스로 이동하는 데 사용할 수 있는 RabbitMQ shovel
Amazon MQ 관리형 RabbitMQ 브로커는 동적 shovel을 지원합니다. 동적 shovel은 런타임 파라미터를 매개 변수를 사용하여 구성하며 클라이언트 연결을 통해 프로그래밍 방식으로 언제든지 시작 및 중지할 수 있습니다. 예를 들어 RabbitMQ 관리 API를 사용하면 다음 API 엔드포인트에 대한 PUT
요청을 생성하여 동적 shovel을 구성할 수 있습니다. 이 예제에서는 {vhost}
를 브로커의 vhost 이름으로 바꾸고 {name}
을 새 동적 shovel의 이름으로 바꿀 수 있습니다.
/api/parameters/shovel/
{vhost}
/{name}
요청 본문에 대기열이나 교환 중 하나만 지정해야 합니다. 아래 예제에서는 src-queue
에 지정된 로컬 대기열과 dest-queue
에 정의된 원격 대기열 간의 동적 shovel을 구성합니다. 마찬가지로 src-exchange
및 dest-exchange
파라미터를 사용하여 두 교환 간의 shovel을 구성할 수 있습니다.
{ "value": { "src-protocol": "amqp091", "src-uri": "amqp://localhost", "src-queue": "
source-queue-name
", "dest-protocol": "amqp091", "dest-uri": "amqps://b-c8352341-ec91-4a78-ad9c-a43f23d325bb.mq.us-west-2.amazonaws.com:5671
", "dest-queue": "destination-queue-name
" } }
중요
shovel 대상이 프라이빗 브로커인 경우 대기열 또는 교환 간 shovel을 구성할 수 없습니다. 퍼블릭 브로커의 대기열 또는 교환 간이나 프라이빗 브로커의 소스와 퍼블릭 브로커의 대상 간에만 shovel을 구성할 수 있습니다.
동적 shovel을 사용하는 방법에 대한 자세한 내용은 RabbitMQ 동적 shovel 플러그 인
참고
Amazon MQ는 정적 shovel 사용은 지원하지 않습니다.
Federation 플러그 인
Amazon MQ는 연동 교환 및 대기열을 지원합니다. Federation을 사용하면 개별 브로커에서 대기열, 교환 및 소비자 간의 메시지 흐름을 복제할 수 있습니다. 연동 대기열 및 교환은 지점 간 링크를 사용하여 다른 브로커의 피어에 연결합니다. 기본적으로 연동 교환은 메시지를 한 번 라우팅하는 반면 연동 대기열은 소비자가 필요한 만큼 몇 번이든 메시지를 이동할 수 있습니다.
Federation을 사용하면 다운스트림 브로커가 업스트림에 있는 교환 또는 대기열의 메시지를 소비하도록 할 수 있습니다. RabbitMQ 웹 콘솔 또는 관리 API를 사용하여 다운스트림 브로커에서 federation을 활성화할 수 있습니다.
중요
업스트림 대기열 또는 교환이 프라이빗 브로커에 있는 경우 페더레이션을 구성할 수 없습니다. 퍼블릭 브로커의 대기열 또는 교환 간이나 퍼블릭 브로커의 업스트림 대기열 또는 교환과 프라이빗 브로커의 다운스트림 대기열 또는 교환 간에만 페더레이션을 구성할 수 있습니다.
예를 들어 관리 API를 사용하면 다음을 수행하여 federation을 구성할 수 있습니다.
-
다른 노드에 대한 federation 연결을 정의하는 하나 이상의 업스트림을 구성합니다. RabbitMQ 웹 콘솔 또는 관리 API를 사용하여 federation 연결을 정의할 수 있습니다. 관리 API를 사용하면 다음 요청 본문을 사용하여
/api/parameters/federation-upstream/%2f/
에 대한my-upstream
POST
요청을 생성할 수 있습니다.{"value":{"uri":"amqp://
server-name
","expires":3600000}} -
대기열 또는 교환이 연동될 수 있도록 정책을 구성합니다. RabbitMQ 웹 콘솔 또는 관리 API를 사용하여 정책을 구성할 수 있습니다. 관리 API를 사용하면 다음 요청 본문을 사용하여
/api/policies/%2f/federate-me
에 대한POST
요청을 생성할 수 있습니다.{"pattern":"^amq\.", "definition":{"federation-upstream-set":"all"}, "apply-to":"exchanges"}
참고
요청 본문에서는 서버에 있는 교환의 이름이
amq
로 시작한다고 가정합니다. 정규식^amq\.
을 사용하면 이름이 “amq”로 시작하는 모든 교환에 대해 federation이 활성화됩니다. RabbitMQ 서버의 교환은 이름을 다르게 지정할 수 있습니다.
Federation 플러그 인을 구성하는 방법에 대한 자세한 내용은 RabbitMQ federation 플러그 인
일관적 해시 교환 플러그 인
기본적으로 RabbitMQ용 Amazon MQ는 일관적 해시 교환 유형 플러그 인을 지원합니다. 일관적 해시 교환은 메시지의 라우팅 키에서 계산된 해시 값을 기반으로 메시지를 대기열로 라우팅합니다. 라우팅 키가 적절히 균등하면 일관적 해시 교환은 메시지를 대기열 간에 비교적 균등하게 분산할 수 있습니다.
대기열이 일관적 해시 교환에 바인딩된 경우 바인딩 키는 각 대기열의 바인딩 가중치를 결정하는 문자열인 숫자입니다. 바인딩 가중치가 높은 대기열은 바인딩된 일관적 해시 교환에서 비례하여 높은 분포의 메시지를 받습니다. 일관적 해시 교환 토폴로지에서 게시자는 단순히 메시지를 교환에 게시할 수 있지만 소비자는 특정 대기열의 메시지를 소비하도록 명시적으로 구성해야 합니다.
일관적 해시 교환에 대한 자세한 내용은 GitHub 웹 사이트에서 RabbitMQ 일관적 해시 교환 유형