RabbitMQ入门学习

RabbitMQ

1、MQ

1.1、什么是MQ

“message queue”

1.2、为什么使用它?或者说使用它有什么好处?

流量削峰:用户下单-MQ-处理订单

应用解耦:订单系统完成,支付系统、库存系统、物流系统都要完成

异步处理:B任务完成后需要通知A,采用异步方式

1.3、MQ分类

  • ActiveMQ:吞吐量万级、毫秒级;维护较少
  • Kafka:适用大数据开发,吞吐量百万级、分布式,日志领域成熟;队列越多load越高,发送消息响应时间长,社区更新慢(大数据)
  • RocketMQ:阿里旗下java实现,吞吐量十万级、分布式、消息0丢失;支持的语言不多(金融)
  • RabbitMQ:当前主流,吞吐量万级,支持多语言,社区活跃高

2、RabbitMQ

2.1、概念

接收和转发:相当于一个“快递驿站”

2.2、四大核心

生产者

交换机:接收来自生产者的消息并推送至队列

队列:接收数据的一直数据结构,仅受主机内存和磁盘限制的约束、

消费者

2.3、RabbitMQ核心部分

Hello World

一个生产者–一个队列–一个消费者

2.4、Work queues

一个生产者–一个队列–多个消费者

方式:

  • 轮询分发(公平方式:因为公平所以不公平)
  • 给信道设置预取值:信道消息数量达到预取值后,信道便不在接收队列中的消息

消息应答机制:就是在“消费者”接收消息时,突然因为消费者线程发生异常而失败导致信息没有完全接收,那么就有可能造成信息丢失,因此消息应答机制就是为了保证信息不丢失,原理:只能当消费者完全接收完消息,应答机制才会通知rabbitmq我已经接收完了,此时rabbitmq就可以把消息删除。

  • 自动应答
  • 手动应答(对应信道里面的消息而言)
    • 单个应答
    • 批量应答

持久化:

  • 队列持久化:durable(创建队列)
  • 消息持久化:MessageProperties.PERSISTENT_TEXT_PLAIN(发布消息)

引出发布确认:即时队列和消息被持久化,但是在持久化的过程中还存在缓存的一个间隔点,在这个间隔点可能会出错。

2.5、Publish/Subscribe(发布确认)

发布订阅模式:将信道设置“发布订阅”模式,一旦消息到达指定队列后,broker会发送一个确认给发送者(如果消息和队列被持久化,那么确认消息写入磁盘后发出)

方式:

  • 单个确认发布
  • 批量确认发布
  • 异步确认发布:给信道设置监听器,对确认的消息进行清除

Routing(交换机)

生产者–交换机–队列–消费者

  • direct:直接
  • topic:主题
  • headers:标题
  • fanout:扇出
  • 默认交换机:空字符串表示

绑定(交换机和队列之间):队列只对它绑定的交换机的消息感兴趣

2.6、死信队列

死信队列的消息来源

  • 消息TTL过期(Time To Live,生存时间)
  • 队列满了,无法进行消息的存储
  • 消息被拒绝

2.7、延迟队列

死信队列+TTL

TTL:队列中的消息如果在TTL范围之内没有被“消费”,会进入死信队列

  • 消息设置TTL
  • 队列设置TTL

优化:灵活设置TTL

基于插件实现延迟队列

  • 自定义交换机类型,底层是将信息存储在mnesia表(分布式数据系统)中,当达到投递时间时,才投递到目标队列中。

2.8、发布确认高级

在生产者发送消息到消费者接收消息过程中,会存在两个明显的错误:交换机名称错误(不存在)、不可路由;如果发送以上两种错误,生产者并不知道消息发送失败,因此需要定义两个情况的回调接口。

备份交换机:如果想要处理上述的错误,仅仅知道错误信息是不行的,要想办法解决这种错误:备份交换机。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉水不好喝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值