如何丢弃rabbitmQ中的一些消息

时间:2014-06-23 19:16:23

标签: queue rabbitmq rabbitmq-shovel

我有一个用例,我需要从交换机上的队列中获取我无法控制的数据。 用例是从这个队列中我不断得到消息。只是想知道在rabbitmq中或使用/编写插件我可以一次丢弃90%的消息,然后将它们保存到我的本地数据存储区。这样做的原因是我无法存储所有消息,只能存储10%的消息。 显然,我的应用程序中有一种方法可以这样做。但我想知道是否有办法在rabbitmq级别上做到这一点。

只是想知道你是否有任何想法/解决方案。

3 个答案:

答案 0 :(得分:1)

如果您无法控制交易所,那么您在应用程序中的操作非常有限。

您可以使用nack批量拒绝邮件 - 这是帮助页面: http://www.rabbitmq.com/nack.html

答案 1 :(得分:0)

由于AMQP规范,rabbitmq队列以循环算法将其消息传递给连接的消费者。因此,如果您的代码是rabbitmq队列的唯一消费者,那么你希望你的应用程序忽略大约90%的收到的消息,然后处理只剩下10%,.... 同时使用10个不同的消费者连接到同一个队列(所有消费者都可以用相同的语言或不同的方式编写)并在其中的任何一个或两个中编写您的消息处理逻辑....放弃其余的8/9消费者(这些将被rabbitmq [和我们在概念上]用来消耗大约90%的消息)

答案 2 :(得分:0)

您可以简单地使用这些消息而不做任何事情。使用rabbitmqadmin是最简单的方法,如下所示:

rabbitmqadmin get queue=queuename requeue=false count=1