dongye9071 2018-06-15 10:17 采纳率: 0%
浏览 155

如何确保邮件平均发送给所有消费者

In our company, we built a push service in Go and we put it on four machines to make sure transmission speed, when we need send notifications we send message to rabbitMQ, then push service will get the messages from queue, but sometimes we find there is only one machines get the message.

Here is the config of rabbitMQ consumers:

msgs, err := ch.Consume(
    q.Name,      // queue
    consumerTag, // consumer
    true,        // auto-ack
    false,       // exclusive
    false,       // no-local
    false,       // no-wait
    nil,         // args
)

How should I set the config to make sure each consumer get the same quantity of messages?

  • 写回答

1条回答 默认 最新

  • dongyuan1870 2018-06-15 11:29
    关注

    RabbitMQ just sends the messages to the subscribers without checking the unacknowledged messages. To get the fair and Round-Robin distribution you can do the following

    • First set the QOS in the consumer channel

          err = ch.Qos(
              1,     // prefetch count
              0,     // prefetch size
              false, // global
      )
      
    • Next set the auto acknowledge to false in the consumer

          msgs, err := ch.Consume(
              q.Name, // queue
              "",     // consumer
              false,  // auto-ack
              false,  // exclusive
              false,  // no-local
              false,  // no-wait
              nil,    // args
      )
      
    • Next send the ack to the Rabbitmq at the end of processing the message each time from each consumer

      msg.Ack(false)

    This pattern is called work queue, this avoid the loss of the messages also, if the consumer goes down before sending the ack then those messages will be re-queued and delivered to another consumer for processing. For more info on this you can check out this link

    评论

报告相同问题?

悬赏问题

  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?