1 图解
工作模式
2 代码
url:
https://github.com/3748/RabbitMq.git
package:
com.test.rabbitmq.work
3 代码介绍
3.1 引入必须依赖
pom.xml
3.2 获取MQ连接
com.test.rabbitmq.util.ConnectionUtil
3.3 消息消费者1
com.test.rabbitmq.work.WorkConsumer1
3.4 消息消费者2
com.test.rabbitmq.work.WorkConsumer2
3.5 消息生产者
com.test.rabbitmq.work.WorkProducer
3.6 启动生产者
先将两个消费者启动
生产50条消息,推送到队列中
WorkConsumer2中每次获取到消息后都Thread.sleep(1000)休眠一秒
WorkConsumer1消费的消息要多于WorkConsumer2
符合能者多劳原则
如果将消费者中channel.basicQos(1);注释.两个消费者将消费相同数量的消息
4 应用场景
1: 红包
2: 大项目中的资源调度(任务分配系统不需知道哪一个任务执行系统在空闲,直接将任务扔到消息队列中,空闲的系统自动争抢)
3: 可以用来进行负载均衡
5 隐患
高并发情况下,默认会产生某一个消息被多个消费者共同使用,可以设置一个开关(syncronize,与同步锁的性能不一样) 保证一条消息只能被一个消费者使用
网友评论