RabbitMQ的相关知识总结

工作中用到队列的地方越来越多,下面简单说下队列中RabbitMQ的相关知识:

1、同步与异步的区别

MQ相关知识点
    同步调用的优点:
        时效性较强 可立即得到结果
    同步调用的缺点:
        耦合度高
        性能和吞吐能力下降
        有额外的资源消耗
        有级联失败的问题
        
    异步通信的优点:
        耦合度低
        吞吐量提升
        故障隔离
        流量削峰
    异步通信的缺点:
        依赖Broker的可靠性。安全性、吞吐能力
        架构复杂了  业务没有明显的流程线、不好追踪管理
      

2、简单队列

SpringAMQP 快速入门
        简单队列案例实现(单个队列  单个消费者):
        SpringAMQP如何发送消息:
            引入amqp的start依赖
            yml配置RabbitMQ地址
            利用RabbitTemplate的convertAndSend方法
        SpringAMQP如何接收消息:
            引入amqp的start依赖
            yml配置RabbitMQ地址
            定义类 添加@Component注解
            类中声明方法 添加@RabbitListener注解(可自动监听接收队列中的消息)
            注意:消息一旦消费就会从队列中删除 RabbitMQ没有消息回溯功能


3 、工作队列      

work模型案例的使用(就是单个队列 多个消费着绑定到这同一个队列中进行消费):
            多个消费者绑定到一个队列,同一条消息只会被一个消费者处理
            通过在yml中设置prefetch来控制消费者预取的消息数量(设置为1 消费一条 取一条        
  

 4、发布与订阅---交换机       

上面的简单队列以及工作队列 一条消息只能满足被一个消费者消费 不能多个消费者同时消费一条消息
        为了满足将同一消息同时发送给多个消费者 增加了exchange(交换机)功能,发布者不再将消息直接传递给队列 而是先发送给交换机,再通过交换机传递给队列  主要有以下三个交换机实现方式
        常见exchange 类型包括:
            Fanout 广播
            Direct 路由
            Topic 话题
        即发布订阅模型:
        1、SpringAMQP-FanoutExchange
            将消息通过交换机传递到每一个与之绑定的队列中
        
            交换机的作用是什么
                接收publicsher发送的消息
                将消息按照规则路由到与之绑定的队列
                不能缓存消息,路由失败,消-息丢失
                FanoutExchange会将消息路由到每个绑定的队列
            声明队列、交换机、绑定关系的Bean是什么
                Queue
                FanoutExchange
                Binding
        
        2、SpringAMQP-DirectExchange
            将消息通过交换机根据RoutingKey判断路由传递到每一个与之绑定的队列中
        
        描述下Direct交换机与Fanout交换机的差异
            Fanout交换机将消息路由到每一个与之绑定的队列
            Direct交换机根据RoutingKey判断路由给哪个队列
            如果多个队列具有相同的RoutingKey 则与Fanout功能类似
        基于@RabbitListener注解声明队列和交换机有哪些常见注解
            @Queue
            @Exchange
            
        3、SpringAMQP-TopicExchange
            将消息通过交换机根据RoutingKey通配符判断路由传递到每一个与之绑定的队列中
        TopicExchange 与 DirectExchange 的区别
            TopicExchange的RoutingKey中支持#通配符
            
        SpringAMQP--消息转换器
            SpringAMQP中消息的序列化与反序列化的实现方式:
                利用MessageConvert实现的,默认的是JDK的序列化(启动类中重新MessageConvert 返回jacksond的序列化方式 即可)
                注意发送方式与接收方式必须用相同的MessageConverter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值