rabbitmq-02篇 工作队列模式

工作队列模式

  一个生产者,多个消费者,每个消费者获取到的消息唯一。

  简单的说,工作队列模式和简单模式一样,只是简单模式一个生产者一个消费者一对一,而工作队列模式一个生产者多个消费者,默认轮询获取。

      

 

 

   这里启动三个线程,分别为生产者,消费者1,消费者2其中生产者和消费者代码与上一篇简单模式基本一致,需要启动多个消费者

注意:

  (1)默认是使用轮询的方式发送给多个消费者,你一个 我一个这种.

  (2)如果想要根据消费者消费的快慢程度( 比如两个消费的硬件配置不同,配置高的消费快 ) 进行分配 , 消费快的多消费点 , 消费慢的少消费点, 需要进行如下:

    第一: 设置消费者的信道需要设置 channel.basicQos(1)

       RabbitMQ中的概念,channel.basicQos 指该消费者在接收到队列里的消息但没有返回确认结果之前,队列不会将新的消息分发给该消费者。队列中没有被消费的消息不会被删除,还是存在于队列中。

    第二: 关闭自动应答 , 这个值需要设置为false ,

      

 

       如果自动应答设置为true , 还是会使用轮询的方式 ,不会使用公平分发

    第三: 开启手动应答

 

channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false);

 

posted @ 2021-09-28 16:39  代达罗斯之殇  阅读(69)  评论(0编辑  收藏  举报