RabbitMq笔记整理

能够说出什么是消息队列;为什么使用消息队列;常见产品有哪些

MQ (message Queue)
    消息队列是程序与程序之间的通讯方法,
    无需即时返回且耗时的操作,进行一部处理,而提高程序系统的吞吐量,
    1.异步处理,提高系统的吞吐量
    2.应用程序解耦合

使用场景

 一开始我们可能只需要非常简单的一个web页面,然后调用成单系统,紧接着扣减库存,最后存到db即可
    后来每次交易,还要通知搜索系统,推荐系统,广告结算系统,商家后台等等等

实现方式:
    AMQP,JMS

常见的产品:activeMQ,zeroMQ,RabbitMQ,kafka     

AMQP协议

AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息网络协议

AMQP模型:

工作过程

发布者(Publisher)发布消息(Message),经由交换机(Exchange)。

交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。

最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。

 消息确认机制

AMQP 模块包含了一个消息确认(Message Acknowledgements)机制:当一个消息从队列中投递给消费者后,不会立即从队列中删除,直到它收到来自消费者的确认回执(Acknowledgement)后,才完全从队列中删除。

死信队列

在某些情况下,例如当一个消息无法被成功路由时(无法从交换机分发到队列),消息或许会被返回给发布者并被丢弃。或者,如果消息代理执行了延期操作,消息会被放入一个所谓的死信队列中。此时,消息发布者可以选择某些参数来处理这些特殊情况。

协议深入理解​​​​​​​


安装配置rabbitmq:

使用
springboot 的maven工程支持amqp相关依赖,Spring Boot提供了对于AMQP的整合;可以使用RabbitTemplate发送消息;可以使用@RabbitListener注解接收消息。

在springboot项目中

生产者:发送消息到RabbitMQ队列(simple_queue)

消费者:接收RabbitMQ队列消息

在springboot项目中创建生产者,把要处理的消息,发送到消息队列

在springboot中创建消费者(@RabbitListener)接收并处理消息


RabbitMq分类
   1. 不直接使用exchange交换机(使用default exchange)
        simple模式:一个生产者产生消息被 一个消费者接收
        work工作队列模式:生产者发送消息,多个消费者监听接收,一个消息只能被一个消费者竞争接收

    2.使用exchange交换机:订阅模式(广播fanout、定向direct、通配符topics)

        1.发布与订阅模式:使用了fanout交换机,可以讲一个消息发给所有绑定该交换的队列
        2.路由模式:使用了derect交换机,消息携带路由key,匹配路由key相同的队列接收
        3.通配符:使用了topics交换机,消息携带路由key(#,*),匹配通配符路由key相同的队列接收

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值