我有一个偶尔生成消息的系统,我只想每5分钟提交零条或一条消息。如果没有生成任何消息,那么队列使用者将不会处理任何消息。如果在5分钟内生成100条相同的消息,我只希望从队列中消耗其中一条。
我使用的是AMQP(rabbitmq),有没有在rabbitmq或amqp协议中实现这一点的方法?我可以检查队列的内容以确保不插入副本吗?队列检查似乎是一个坏主意,通常不应该为消息传递系统做什么。
如果不进行队列检查,可以使用这些工具来完成这一任务吗?唯一想到的解决方案是让第二个队列接收所有消息,然后消费者读取每条消息并将其放入内部队列,等待5分钟,并且丢弃收到的任何重复消息。在延迟之后,单个消息被放在要处理的“真实”队列上。
似乎这是队列系统可以处理的常见情况。有什么想法吗?