小编Pau*_*itz的帖子

跨 RabbitMQ 队列的消息弹性最佳实践

我试图了解 RabbitMQ 的最佳用途来满足以下问题。

作为上下文,我不关心此用例中的性能(此流的峰值 TPS 为 2 TPS),但我担心弹性。

我在集群中安装了 RabbitMQ 并忽略死信队列,基本流程是我有一个服务接收请求,创建一个持久消息,它在事务中排队到一个持久队列(此时我很高兴请求被保护到磁盘)。然后我让另一个进程侦听一条消息,它读取(不使用自动确认),做一堆事情,将一条新消息写入事务中的不同交换队列(现在再次高兴这条消息被保护到磁盘)。假设事务成功完成,它会手动将消息确认回原始消费者。

在这一点上,我唯一的失败情况是我在提交事务以写入我的第二个队列和返回 ack 之间失败。这将导致一条消息可能被处理两次。我还能做些什么来填补这个空白,或者我是否必须想出一种处理重复消息的方法。

作为上下文的最后一点,服务是用 java 编写的,因此使用 java 客户端库。

保罗·菲茨。

java rabbitmq

4
推荐指数
1
解决办法
2428
查看次数

标签 统计

java ×1

rabbitmq ×1