一、workqueues

多个消费者监听同一个队列,提高处理速度

相比简单模式多加了消费者,类似于分布式,加快了处理消息的速度

实际项目只声明一次队列,一般声明在消费者,因为消费者是一直运行的,不能关闭资源

代码加一个消费者,就是复制一份消费者类即可,偶数就平均分配,奇数就一边2个一边3个

二、publish/subscribe发布订阅(又叫扇出模式)

将一个交换机里面的消息给多个队列,(消息同时发送到邮件队列和短信队列,两个消费者,一个监听邮件,一个监听短信(sms:short messaging service)

类似于建两个最简单的场景,只不过要发两遍消息,而上面的只需要发一次消息

2.1 交换机

不同于简单模式,发布订阅要自定义交换机,类似于定义队列我们也定义在消费者;不写路由,路由为""

交换机有两个参数,一个是名字,一个是交换机的类型,发布订阅模式就是FANOUT(扇出,用的枚举)

2.2 绑定交换机和生产者

因为没有路由,把交换机和队列绑上即可,它会把消息发送到所有队列,没有路由还是惯例写""

三、Routing(路由模式)

队列和交换机绑定在一起,消息根据路由发送到指定队列

3.1 交换机和队列绑定路由

四、Topic(通配,以后都用这种)

解决有些消息既要进消息队列,又要进短信队列

定义路由的通配规则

这种两个队列都会进

五、消息属性

生产者,注意这里的过期时间是字符串

消费者都取得到

六、消息确认机制

为保证消息在发送和处理时消息不丢失

​ 生产者发送消息,有确认机制

​ 消费者处理消费,有确认机制

6.1 生产端确认机制

6.1.1 生产者确认

监听要开一个线程

注意:要监听确认发送了消息,连接不能关闭

6.1.2 return机制

如果路由不到,返回监听信息,也是消息传递失败

没发到信息,要在handleReturn里面进行记日志,记录数据库或人工干预等等

6.2 消费端确认机制(ACK和限流)

消费者确认机制:自动确认,手动确认

​ 自动:

​ 手动:

6.2.1 消费者确认

限流一般和ack一起用:

​ 限流一般一次一个,多个消费者谁快谁处理的消息多

​ 自动确认改为false

​ 最后要执行.basicAck才算处理信息结束,否则消息还会给你退回来,保证消息不丢

6.2.2 NACK重回队列

消费者处理失败NACK

try{

​ ack();

}catch(){

​ //处理失败,nack()

​ 可以重回队列

​ 可以不重回队列

​ 消息丢失

​ 有死信队列进入死信队列,没有死信队列消息丢失

​ nack();

}

消息直接丢失可以解决,进入死信队列,下面详讲

还有一种处理办法,就是消息拒绝,拒绝后消息也会丢失,让处理失败的信息不丢失,解决方法也是死信队列

少了个批量处理的参数,默认一次处理一个

七、队列属性

所有消息的过期时间不是字符串,为数字类型

八、死信队列

RabbitMQ其实应该叫死信交换机,沿用其他消息队列的概念

8.1 什么是死信

满足以下条件的消息,都会进入死信队列

8.2 死信测试

8.2.1 先搭建一个接受消息的交换机和队列

8.2.2 搭建死信交换机和死信队列

8.2.3 绑定死信交换机和队列

其实就是设置普通队列的两个属性

8.2.4 再建一个消费者来专门处理死信队列

九、死信队列实现延迟队列

处理秒杀经典案例:下的订单都放到订单队列,设定过期时间,没有消费者处理它,等到过期时间全部进入死信队列,然后处理死信队列,处理过的消息再进行redis内订单操作

RabbitMQ-2-工作模式及参数配置相关推荐

  1. RabbitMQ的工作模式Topics  通配符,test测试代

    RabbitMQ有以下几种工作模式 : 1.Work queues  工作队列 2.Publish/Subscribe 发布订阅 3.Routing      路由 4.Topics        通 ...

  2. RabbitMQ的工作模式Routing 路由,test测试代

    RabbitMQ有以下几种工作模式 : 1.Work queues  工作队列 2.Publish/Subscribe 发布订阅 3.Routing      路由 4.Topics        通 ...

  3. 聊一聊RabbitMQ六种工作模式与应用场景

    简介 今天我们来聊一聊 RabbitMQ 的工作模式与其对于的应用场景有哪些. 你可能会疑惑,作为 MQ 不就是生产者将消息发送到 MQ ,再讲消息发送到消费者哪里,任务不就完成了吗? 其实,不是这样 ...

  4. RabbitMQ,RabbitMQ 的工作模式,Spring 整合 RabbitMQ,Springboot 整合RabbitMQ

    什么是RabbitMQ 1.1 MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器.多用于分布式系统之间进行通信. ⚫ MQ,消息队列,存储消息的中间件 ⚫ ...

  5. RabbitMQ的工作模式

    RabbitMQ工作模式 Work queues Publish/Subscribe Routing Topics Header RPC Work queues work queues工作模式是一个服 ...

  6. RabbitMQ六种工作模式:simple work publish routing topic rpc

    simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者 ...

  7. RabbitMq的工作模式 介绍+测试代码,以及三种Exchange模式介绍.

    RabbitMq的提供了六种模式分别是:简单模式,工作模式,发布\订阅模式,路由模式,通配符模式,RPC远程调用模式 下面将详细介绍常用的前五种模式,附上测试代码. 公共的代码---连接工具类: pu ...

  8. RabbitMQ六种工作模式

    Simple 模式 消息产生着将消息放入队列 消息的消费者 (consumer) 监听 (while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除 (隐患 消息可能没有被消费 ...

  9. RabbitMQ的工作模式和使用场景

    RabbitMQ工作模式 1.基本模型 2.RabbitMQ应用场景 MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Me ...

  10. 学习之路-RabbitMQ(三):RabbitMQ的工作模式

    RabbitMQ有以下几种工作模式 : 1.Work queues 工作队列 2.Publish/Subscribe 发布订阅模式 3.Routing 路由模式 4.Topics 通配符模式 5.He ...

最新文章

  1. 第90节:Java中的Linux基础
  2. ubuntu 修改ip
  3. Oracle 小技巧
  4. RabbitMQ——自动退出的解决方案
  5. springboot web项目_Vue、Spring Boot开发小而完整的Web前后端分离项目实战12
  6. mediawiki 搭建
  7. 21张GIF动图让你秒懂数学原理
  8. unity3d自动寻路教程
  9. InsecureRequestWarning: Unverified HTTPS request is being made.解决方法
  10. java ftl_.ftl文件 是什么文件 freemaker
  11. printf常用输出格式总结
  12. linux查看完整历史记录
  13. C++-OpenCV(1)-连通区域
  14. centos 时间自动同步_centos 设置时间同步
  15. 硅谷裁员潮下的华人码农
  16. JDBC--藤原豆腐店自用
  17. java BIO tcp服务端向客户端消息群发代码教程实战
  18. java多线程(分分钟基础秒杀)
  19. 服务器usb驱动安装系统安装失败怎么办,Win7系统安装USB3.0驱动程序失败怎么办?Win7系统安装USB3.0驱动程序失败的解决方法...
  20. vue2的生命周期函数

热门文章

  1. IOS 证书安装详解
  2. windows 利用R定时抓取猫眼专业版电影票房
  3. 一加手机·关闭应用双开储存空间
  4. 行之有效:第一章观后有感
  5. 实体零售关店潮之下 这个美国品牌偏不信邪
  6. (2011-12-11 旧博文搬运)away3d太阳系DEMO
  7. 网络(HCNA00笔记)
  8. 直连线和交叉线的做法
  9. unity警告“Tiled GPU perf. warning: RenderTexture color surface (0x0) was not cleared/discarded, doin”
  10. 稻盛和夫:企业明天的希望寄托在每个人身上