문제

산발적으로 메시지를 생성하는 시스템이 있으며 5 분마다 0 또는 하나의 메시지 만 제출하고 싶습니다. 메시지가 생성되지 않으면 대기열 소비자가 처리하지 않습니다. 5 분 이내에 동일한 100 개의 동일한 메시지가 생성되면 대기열에서 소비되는 메시지 만 소비하기를 원합니다.

AMQP (RabbitMQ)를 사용하고 있습니다. RabbitMQ 또는 AMQP 프로토콜 내에서이를 달성 할 수있는 방법이 있습니까? 중복을 삽입하지 않도록 대기열의 내용을 검사 할 수 있습니까? 대기열 검사는 나쁜 생각이며 일반적으로 메시징 시스템에 대해 수행해야 할 일이 아닙니다.

대기열 검사가 없으면 이러한 도구로이를 수행 할 수 있습니까? 떠오르는 유일한 솔루션은 모든 메시지를 취하는 두 번째 대기열이있는 다음 소비자가 각 메시지를 읽고 내부 대기열에 넣고 5 분 동안 기다립니다. 수신 된 중복 메시지는 폐기됩니다. 지연 후, 단일 메시지가 처리 할 "실제"큐에 올려집니다.

이것이 큐 시스템이 처리 할 수있는 일반적인 상황 인 것 같습니다. 어떤 아이디어?

도움이 되었습니까?

해결책

메시지 상태를 처리하는 것은 AMQP가 다루는 것이 아닙니다. AMQ 및 프록시 메시지에도 존재하는 일부 프로세스에서 상태를 처리하려고 시도 할 수 있습니다 (원래 질문에 쓴 것처럼). 상황에 따라 시퀀스 또는보다 정교한 정교한 수단을 사용할 수 있지만 AMQP는이 특정 사용 사례를 처리하지 않습니다.

보장되는 유일한 것은 다중 바인딩이 메시지와 일치하는 경우 이후에 큐에 전달되는 메시지와 일치하는 경우 실제로 하나의 메시지 만 실제로 전달된다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top