RabbitMQ 批量消费消息并一次全部确认

问题描述 投票:0回答:1

我有一个 RabbitMQ 队列,我在其中发布了数千条消息。我需要一个后台服务来:

  • 批量检索消息,每100条消息
  • 将这 100 条消息存储在数据库中
  • 一次性确认全部 100 条消息
  • 继续处理下一批 100 条消息

我正在使用 RabbitMQ 客户端来监听消息,但我不知道如何“批处理”它们。

有没有人有一个关于如何一次获取 100-100 条消息并在将它们保存在数据库中后立即确认所有消息的工作示例?

提前非常感谢

c# rabbitmq batch-processing consumer
1个回答
10
投票

您想使用“预取”和“多重确认”功能 -

这就是您将在代码中执行的操作:

  • 打开连接和通道
  • 将通道预取设置为 100
  • 启动消费者。您为消费者注册的回调将开始通过消息调用。您必须将这些消息保存在列表或其他数据结构中
  • 收到 100 条消息后,保存第 100 条消息的投递标签并进行数据库工作。
  • 通过将“多重确认”设置为
    true
    来确认 100 条消息,并使用第 100 条消息的传递标签。
  • RabbitMQ 将以同样的方式发送接下来的 100 条消息
© www.soinside.com 2019 - 2024. All rights reserved.