2014-04-10 3 views
0

큐를 x-max-length으로 선언하면 제한에 도달하면 모든 메시지가 삭제되거나 죽은 문자가 표시됩니다.흐름 제어를 사용하는 RabbitMQ 큐 길이 제한

RabbitMQ가 삭제되거나 죽은 문자 대신 Memory/Disk watermarks과 같은 흐름 제어 메커니즘을 활성화 할 수 있는지 궁금합니다. 그 이유는 메시지 순서 (제출할 때, FIFO 동작)를 보존하고 생산자를 느리게하는 데 훨씬 편리하기 때문입니다.

답변

0

응용 프로그램 수준에서 큐 길이 제한을 실현하십시오. Redis 키를 증가/감소시키고 최대 값을 확인하십시오. 네이티브 RabbitMQ 메커니즘만큼 정확하지는 않지만 동일한 브로커의 다른 큐/교환에 영향을주지 않으면 서 별도의 큐/교환에서 꽤 잘 작동합니다.

P. 또는 일부 작업에서는 RabbitMQ가 최선의 선택이 아니며 오래된 학교 관계형 데이터베이스 (MySQL, PostgreSQL 또는 기타 원하는 것)가 가장 잘 작동하지만 RabbitMQ는 여전히 이벤트 버스로 사용할 수 있습니다.

+0

예 내가 응용 프로그램 수준에서 스로틀 수 있습니다 알고 있어요 ([channel.flow()] (https://www.rabbitmq.com로 /amqp-0-9-1-reference.html#channel.flow). 비록 RabbitMQ가 이미 브로커 자체에서 그런 메커니즘을 구현했는지 찾고 있었지만. –

+0

RabbitMQ는 https://www.rabbitmq.com/specification.html#method-status-channel.flow를 지원하는'channel.flow' 지원이 제한되어 있습니다. 사실 서버는'active = true'로 흐름을 차단하는 것을 지원하지 않습니다. – pinepain

+0

그리고'channel.flow'는 채널 수준에서 작동하므로 어쨌든 옵션이 아닌 것처럼 보입니다. – pinepain