消息队列之RabbitMQ的五种工作模式及代码样例(一)

1.消息队列的作用

       解耦:各代码块或者系统通信都可能存在强耦合的关系,可以通过消息队列处理强耦合。

       消峰:消减高并发峰值,防止请求达到系统处理上限以及超过上限时不丢失不拒绝请求。

2.rabbitmq介绍

       rabbimtq实现了sun公司定义的AMQP(advanced message queue protocal)高级消息队列协议,默认端口15672。

       RabbitMQ服务端结构:连接组件、交换机组件(exchange)、队列组件(queue)。客户端通过获取连接通道和服务端进行消息的逻辑处理的沟通。

       长连接:基于TCP/ip封装的,创建和销毁都占用大量资源不易频繁创建销毁。

       短连接:基于长连接创建的短连接,可以频繁创建销毁速度很快适合用来通信管理。

       RabbitMQ交换机:在客户端使用rabbitmq时很有可能会通过一次消息传递并发发送到多个后端队列中,对于客户端并发能力就有稳定的高性能的要求。如果这种并发发送消息交给客户端,由于客户端语言不同性能不同并发不同,导致rabbitmq技术使用不稳定。引入交换机,只允许生产端发送消息时交给交换机由交换机来处理后续发送队列并发逻辑。

       消费端的确认机制逻辑:队列保存消息信息,消费端监听队列获取消息,队列将消息转化为unacked未确认状态如果消费端返回ack确认队列删除消息,如果消费端没有返回ack确认,状态一直保持在unacked,直到消费端断开连接,消息回复ready。确认机制的目的是为了提供一个确保消息正常消费的逻辑,消费端不一定所有业务场景都必须保证消息的正确消费,可以丢失一部分数据保证处理速度。

autoAck:false//可以保证每条消息正确处理的,成功率高效率低。

autoAck:true//只要消费端拿到消息,就确认返回,成功率低效率高。

2.1 交换机的分类和运行机制

       交换机的运行机制:生产端要发送消息,永远不会将消息发送给队列,而是发送给交换机。消息本身除了数据以外,携带一个路由key值,交换机根据自身的类型不同,采用不同的方式处理这些消息。

2.1.1 简单模式

       一个队列queue只被一个消费者监听消费。生产者生成消息发送到交换机。交换机根据消息属性,将消息发送给队列。消费者监听这个队列,发现消息后获取消息执行消费逻辑。

2.1.2 争抢模式

       生产者发送消息到交换机,交换机根据消息属性将消息发送给队列,多个消费者同时绑定监听一个队列,之间形成了争抢消息的效果。

2.1.3 发布订阅(fanout) 

       生产端发送消息到交换机,交换机由于是发布订阅模式会将这个消息发送同步到后端所有与其绑定的队列。应用场景:邮件的群发,广告的群发。

2.1.4 路由模式(direct)

       生产端发送的消息携带具体的路由key值。交换机接收路由key值,判断和当前交换机绑定后端队列哪个满足路由的匹配将消息发送给这个队列。应用场景:处理一些特殊的消息逻辑,可以经过路由的筛选。

2.1.5 主题模式(topic)

       类似于路由模式的结构,区别在于队列绑定交换机使用的路由key。交换机绑定队列不再使用具体路由key,可以使用符号代替路由key。应用场景:实现多级传递的路由筛选工作。

#:任意级的任意长度的字符串。*:任意长度字符串,但是只有一级。

例如IP为 6.7.8.9.10

可以匹配到 6.*.*.*.*

不可以匹配到 6.*.9.#

可以匹配到 *.*.8.#

后续内容链接:

消息队列之RabbitMQ的五种工作模式及代码样例(二)_超级棒的科技的博客-CSDN博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值