Tec*_*ain 6 javascript message-queue amqp rabbitmq node.js
我有一个订阅者将数据推送到队列中。现在消息看起来像这样
{
"Content": {
"_id" ""5ceya67bbsbag3",
"dataset": {
"upper": {},
"lower": {}
}
}
Run Code Online (Sandbox Code Playgroud)
现在可以使用相同的内容 id 推送新消息,但数据将不同。因此,我想删除具有相同 id 的旧消息或替换那些 id 相同的消息并仅保留最新消息。
我还没有在rabbitmq 中找到直接的解决方案。请指导我如何做到这一点?
我已经浏览了一些帖子。
您想要实现的目标无法通过 RabbitMQ(或更确切地说 AMQP 协议)轻松解决。
RabbitMQ 队列是简单的FIFO堆栈,除了在顶部发布和从底部消费之外,不提供任何访问元素的方法。
因此,在不依赖其他服务的情况下“更新”现有消息的唯一方法是获取所有消息,直到找到您感兴趣的消息,丢弃它,然后将新消息与您获取的其他消息一起发布与它一起。
总的来说,在使用 RabbitMQ 进行消息复制时,建议使其消费幂等。换句话说,消费两条被认为相同的消息应该会导致相同的结果。
实现幂等性的一种方法是依赖辅助缓存,在其中存储消息标识符及其有效性。一旦消费者从 RabbitMQ 获取新消息,它就会检查缓存以查看它是否是有效消息并采取相应的操作。
小智 0
我认为这是一种稍微错误的使用rabbitMQ的方式。
只有不可变(不打算更改)的任务才应放入工作人员应使用的队列中。
实现特定任务的另一种方法是
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |