2017-02-11 7 views
1

RabbitMQ를 사용하여 사용자에게 알림을 보내고 있습니다. 사용자는 언제든지 대기열을 읽을 수 있습니다.RabbitMQ - 게시자 측에서 중복 메시지 방지

내가 직면하는 문제는 대기열이 밤에 많은 알림으로 채워지고 사용자가 아침에 반환하면이 메시지를 순차적으로 처리해야한다는 것입니다. 이러한 알림은 대부분 중복 된 것입니다.

게시자 측에서이를 개선하는 것이 좋습니다. 즉, 새 알림을 추가하기 전에 대기중인 알림이 이미 있는지 조사합니다. 이 경우 새로운 알림이 실제로는 새로운 알림 인 경우에만 대기하므로 중복을 피할 수 있습니다.

알림을 결합하여 더 확장 할 수도 있습니다. 단순히 새 알림을 대기열에 넣지 않고 대기열의 현재 알림을 새 알림으로 대체 할 수 있습니다. 내부 알림 배열의 예).

AMQP/RabbitMQ에서 가능합니까?

답변

3

아니요, 기본적으로 기존 메시지를 바꿀 수 없습니다.

+0

의견에 감사드립니다. 그러나 우리 시나리오를 해결/개선하기 위해 우리는 무엇을 할 수 있습니까? 기본적으로, 나는 소비자가 잠시 동안 읽지 않았기 때문에 대기열에 '과부하'되는 시나리오를 해결하려고합니다. 예를 들어, 밤에 소비자가 오프라인 일 때 발생합니다. 소비자가 각 메시지를 처리해야한다는 것을 피하고 싶습니다.이 메시지는 대기열에있는 메시지와 중복된다는 것을 알지 못합니다. –

+0

당신은'TTL' 확장자를 사용하여 X 초보다 오래된 메시지를 제거 할 수 있습니다. https://www.rabbitmq.com/ttl.html 메시지 중복은 애플리케이션 측에서 왔습니다! 당신이 그 (것)들을 피하고 싶은 경우에 당신은 당신이 보내는 메시지를 추적해야한다. – Gabriele