0

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

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

4

3 回答 3

1

如果您无法控制交换,那么您几乎只能在您的应用程序中进行操作。

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

于 2014-06-23T19:22:47.293 回答
0

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

于 2014-08-08T13:02:40.413 回答
0

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

rabbitmqadmin get queue=queuename requeue=false count=1

于 2015-11-24T10:13:05.680 回答