RabbitMQ系列(三)-工作队列模式

RabbitMQ系列(三)-工作队列模式

上一篇 : RabbitMQ系列(二)-点对点模式

下一篇 : RabbitMQ系列(四)-发布订阅模式

一、 介绍

1. 上一篇博主介绍了点对点的工作模式,比较适合顺序消费的场景.但是消费能力就不足了.
2. 工作队列模式也是其中的一种. 指的是一个同一时刻,一个生产者,一个队列,多个消费者.增加了消费能力.
3. 使用默认的default交换机,rootingkey是ququename
4. 下图是官网对这个模式介绍的一张图片.

在这里插入图片描述

二、 测试

2.1 生产者(和点对点模式相同)

  1. 首先安装Nuget包–>RabbitMQ.Client
  2. 生产者—>由于代码和点对点模式相同,博主这边就直接给结果了
  3. 生产了30条消息在队列 —worker_queue中

在这里插入图片描述

2.2 消费者

var factory = new ConnectionFactory
            {
                HostName = "192.168.3.20", # rabbit地址
                Port = 5672, # 如果改了端口的需要在这里指定
                UserName = "xxx", #登录名
                Password = "xxx", #密码
                VirtualHost = "/" #虚拟主机
            };
            #region 点对点
            string queueName = "worker_queue"; # 声名队列
            using var conn = factory.CreateConnection(); #创建连接
            using var channel = conn.CreateModel(); #创建channel信道
            channel.QueueDeclare(queue: queueName, # 声明队列
                                 durable: false,
                                 exclusive: false,
                                 autoDelete: false,
                                 arguments: null);
            #消费者是以事件的方式订阅消息的
            var consumer = new EventingBasicConsumer(channel);
            #根据机器性能给消费者定消费能力计划
            channel.BasicQos(prefetchSize: 0,
                             prefetchCount: 1, #表示消费着同一时刻只能消费一条消息
                             global: false);
            consumer.Received += (model, ea) =>
            {
                var body = ea.Body.ToArray();
                var message = Encoding.UTF8.GetString(body);
                Console.WriteLine($"Received {message}");
            };
            channel.BasicConsume(queue: queueName, #消费完成通知rabbit
                                 autoAck: true,
                                 consumer: consumer);
            #endregion

            Console.ReadKey();

2.3 测试消费

在这里插入图片描述

1. 此时我们可以看到积压的消息按照顺序全部处理完了,由于我们只是启动了一个消费者,那么和点对点模式一样了
2. 下面我们来启动多个消费者来看看效果

在这里插入图片描述

2.4 实时联调测试

在这里插入图片描述

三、 总结

1. 上面博主介绍了工作队列模式和实现.
2. 这种模式咱们在实际应用场景中就比点对点多了,多消费者,来增加消费能力.
3. 如有不对,欢迎指正.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值