处理消息队列中的重复项

时间:2019-01-14 21:17:53

标签: message-queue debouncing

比方说,我有大量的Q / A论坛,例如堆栈溢出。 想象只有两个线程,第一和第二。 每当有人发布答案/回复时,都会导致两次插入消息队列。 1.插入帖子/回复的命令 2.用于重建给定线程的缓存的命令。

让我们假设,我在特定时间内拥有队列的快照:

0: insert First.1 answer
1: rebuild First
2: insert First.2 answer
3: rebuild First
4: insert Second.1 answer
5: rebuild Second
6: insert First.3 answer
7: rebuild First

A. / 在步骤#1中处理队列时,是否有任何机制可以帮助实现,在#3和#7处仍存在“ First”的重建,因此#1和#3可以被丢弃,只有# 7个可以处理吗?

B. / 哪种消息队列产品(RabbitMq,Kafka,ActiveMQ ...)最适合此用法?此处的关键属性是性能和可伸缩性,因为应用程序应以每秒10万次的写入速度(每秒90%的高速缓存读取)处理> 100,000 req./s。

谢谢您的任何建议。 (不是作业,只是简化了太复杂的问题,无法详细描述)

1 个答案:

答案 0 :(得分:1)

我相信您在此处查找的术语是“反跳”。如果我是索引重建器服务,我可能知道重建索引需要5秒钟。因此,可能有多个消息到达重建索引所需的时间范围。防反跳例程将在时间常数上运行,可以接收许多消息,但会在合理的时间单位内产生一个重建请求。

您必须为此编写自己的例程,或者可以使用Rx(反应性框架)的语义来做到这一点。

Here is a resource可能至少在概念上触及了您要实现的目标。