基本上我的消费者也是生产者。我们得到一个初始数据集并将其发送到队列中。消费者需要一个项目,对其进行处理,从该点有3种可能性:是否可以确保唯一邮件位于rabbitmq队列中?
- 数据良好,并得到把“好”的队列存储
- 数据不好,丢弃
- 数据不好(尚)或差(尚),所以数据被分解成更小的部分并发送回队列进行进一步处理。
我的问题是与第3步,因为队列的增长速度非常快,在首个可能是一个数据被分解成队列复制的一部分,多数民众赞成者和消费者继续处理,并在结束了一个无限循环。
我认为防止这种做法是防止重复进入队列。我不能在客户端做到这一点,因为在一个小时之内,我可能会有很多核心处理数十亿个数据点(每个客户端在提交之前扫描它会使我减慢太多)。我认为这需要在服务器端完成,但正如我所提到的,数据量非常大,我不知道如何有效地确保没有重复。
我可能会问不可能的事情,但认为我会给它一个镜头。任何想法将不胜感激。
我试图做到这些(我认为)。通过确保没有过去的项目重复,我确保相同的数据不会被处理多次。我只是在一定的的RabbitMQ的FPGA实现,有没有办法简单地发送消息的ID,并有RabbitMQ的丢弃重复或者我需要设置一个过滤器或东西(如果我这样做,它是如何与RabbitMQ的工作)。 – 2012-04-14 19:30:20
没有办法做到这一点,AFAIK。兔子并不关心你的消息内容或者你的队列中已经存在的内容,所以应该由你的应用来处理。 – 2012-04-14 19:45:13
所以,如果我的消息的ID是唯一的(我的实际数据的散列码),我需要发送给兔子之前,将它们存储在一个数据库或东西,查询针对(查看是否MSG ID已经被之前发送)?我一直在想,但它会要求客户端在我的消息服务器等待时执行一些查询(我正试图查看是否可以将此工作推送到消息服务器本身) – 2012-04-14 19:53:08