美文网首页
RabbitMQ基本原理和使用场景

RabbitMQ基本原理和使用场景

作者: 奔向金字塔 | 来源:发表于2020-01-15 14:54 被阅读0次

    1.RabbitMQ和消息队列是什么?

    (1)RabbitMQ其实就是一个消息中间件,主要就是负责 消息发送和消息接收的一个基础软件。
    (2)消息队列,顾名思义就是把一些消息放到一起排个队。类似一个常量池一样。有自己的编号,等待别人点名。消息队列主要有三个概念:生产者、消息队列、消费者。


    ![rabbitmq.png](https://img.haomeiwen.com/i8141531/bac135b1d1deaf42.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    2.RabbitMQ如何运用于消息队列?

    (1)对于MQ来说。除了上面三个概念,还加入了一个交换机的概念。也就是:生产者、交换机、消息队列、消费者。简单来说就是将消费者和消息队列做了隔离。用交换机来决定消息发布到那个队列。因为消息队列可能有很多个。
    (2)MQ服务的结构图


    rabbitmq.png

    如上图所示
    Clients生产者P
    X代表交换机Exchange、红色部分是Queue消息队列(二者为Server)
    Clients消费者C

    3.RabbitMQ简单运作流程

    3.1交换机Exchange是什么?

    交换机根据一定规则决定了生产者的消息被投放到那个消息队列,算是一个中转站吧。官方说就是:接收到消息绑定到某个队列
    【交换机有四种类型】
    (1)Direct是默认的模式,也是最简单的模式。也就是说,如果你创建一个消息队列并设置了一个boundingkey为admin123,生产者发送消息的时候,也会指定一个key .如果boundingkey和key相同的时候,这个消息就能放入到你创建的队列中。
    (2)topic是匹配通配符。发送消息的时候,交换机指定的key和该模式相匹配的时候,才能建立绑定关系,消息就能放入到匹配成功的队列。
    (3)header是匹配键值对,队列和交换机都会指定一组键值对。如果匹配成功,消息就可以放入到匹配成功的队列。
    (4)Fanout,是广播的形势,消息会放入到所有队列。及时设置了key也无效了。

    3.2消息队列的使用流程?

    (1)客户端连接消息队列服务器,建立一个通道channel
    (2)客户端生成Exchange,设置相关属性
    (3)客户端生成Queue,设置相关属性
    (4)客户端使用routingKey,让交换机和队列之间建立绑定关系。
    (5)客户端发送消息到Exchange交换机,交换机负责投入到队列。

    4.SpringBoot整合RabbitMQ

    4.1在SpringBoot中配置参数有哪些?
    spring.rabbitmq.addresses指定client连接到的server的地址,多个以逗号分隔.
    spring.rabbitmq.dynamic是否创建AmqpAdmin bean. 默认为: true)
    spring.rabbitmq.host指定RabbitMQ host.默认为: localhost)
    spring.rabbitmq.listener.acknowledge-mode指定Acknowledge的模式.
    spring.rabbitmq.listener.auto-startup是否在启动时就启动mq,默认: true)
    spring.rabbitmq.listener.concurrency指定最小的消费者数量.
    spring.rabbitmq.listener.max-concurrency指定最大的消费者数量.
    spring.rabbitmq.listener.prefetch指定一个请求能处理多少个消息,如果有事务的话,必须大于等于transaction数量.
    spring.rabbitmq.listener.transaction-size指定一个事务处理的消息数量,最好是小于等于prefetch的数量.
    spring.rabbitmq.password指定broker的密码.
    spring.rabbitmq.port指定RabbitMQ 的端口,默认: 5672)
    spring.rabbitmq.requested-heartbeat指定心跳超时,0为不指定.
    spring.rabbitmq.ssl.enabled是否开始SSL,默认: false)
    spring.rabbitmq.ssl.key-store指定持有SSL certificate的key store的路径
    spring.rabbitmq.ssl.key-store-password指定访问key store的密码.
    spring.rabbitmq.ssl.trust-store指定持有SSL certificates的Trust store.
    spring.rabbitmq.ssl.trust-store-password指定访问trust store的密码.
    spring.rabbitmq.username指定登陆broker的用户名.
    spring.rabbitmq.virtual-host指定连接到broker的Virtual host.
    
    4.2引入相对应的pom文件
    rabbitmq-pom.png

    5.RabbitMQ除了发送消息,还能异步执行方法,减少服务器端响应。

    相关文章

      网友评论

          本文标题:RabbitMQ基本原理和使用场景

          本文链接:https://www.haomeiwen.com/subject/bhwaactx.html