原代码地址 快速掌握RabbitMQ(二)——四种Exchange介绍及代码演示 - 捞月亮的猴子 - 博客园 (cnblogs.com)
1
四种交换规则 1 direct类型 根据不同的routingKey 和推送到不同的消费者 2 fanout类型 生产和消费 定义 对应交换机和队列,然后根据这两个 来确认关系和推送 3 topic路由规则 模糊匹配 4 header类型 通过 head提送数据 RabbitMQ的交换机(exchange)的作用是路由消息,我们可以根据应用场景的不同选择合适的交换机。如果需要精准路由到队列, 或者对消息进行单一维度分类(只对日志的严重程度这一维度进行分类)可以使用direct类型交换机; 如果需要广播消息,可以使用fanout类型的交换机; 如果对消息进行多维度分类(如例子中按照地区和消息内容类型两个维度进行分类)使用topic类型的交换机; 如果消息归类的逻辑包含了较多的AND/OR逻辑判断可以使用header类型交换机(开发中很少用到Header类型,官网上关于Header类型的介绍也不多)。 2 1 消费模式 1 TX机制 类似数据库事务, 出错就回滚, 2 Confirm模式 这个有点像工作单元,消息处理全部ok,返回true,出错返回false,并抛出异常(这个和上面结合挺好) 2 消费者消息确认(自动确认和显示确认) 1 自动确认 就是自动处理了,不会管你消息处理ok不ok, 2 显示确认 添加确认代码执行后才添加回执 3 消息持久化 就是保存到磁盘,mq挂了再取出来,不会丢失消息 4 消息优先级 就是消息排序,那个先发送 3 1 消费模式 1 EventingBasicConsumer介绍 这个就是发布订阅模式,可以一直推送,长连接 2 BasicGet方法介绍 这个只获取一次,类似http请求,请求一次返回一次 3 QueueBaicConsumer 已过时 2 Qos 服务质量 就是例如推了100条,消费者接受100条,但是中途服务器断了,就没了,(也可以显示确认,但是有缺点1 数据过多是内存爆了。2 单个消费者处理过慢时可添加消费者,但是这些消息都被原来的消费者接收了,状态为Unacked,所以这些消息不会再发送给新添加的消费者。针对这些问题怎么去解决呢?) 所有添加qos,分批次推送并确认 可以完美解决上边的问题,使用Qos时,Broker不会再把消息一股脑的发送给消费者,我们可以设置每次传输给消费者的消息条数n,消费者把这n条消息处理完成后,再获取n条数据进行处理,这样就不用担心消息丢失、服务端内存爆满的问题了,因为没有发送的消息状态都是Ready,所以当我们新增一个消费者时,消息也可以立即发送给新增的消费者。注意Qos只有在消费端使用显示确认时才有效,使用Qos的方式十分简单
标签:总结,Qos,消费者,确认,交换机,MQ,消息,类型,一些 From: https://www.cnblogs.com/liujian1368928/p/18204446