SpringBoot 集成 RabbitMQ

SpringBoot 集成 RabbitMQ

简介

  RabbitMQ是基于AMQP(Advanced Message Queuing Protocol)协议标准开发规范的一种消息投递服务,主要应用场景 异步处理、应用解耦、流量削峰。

RabbitMQ 名词

  • Broker : 它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,。
  • vhost : 虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。
  • Exchange :消息交换器,它指定消息按什么规则,路由到哪个队列。
  • Queue : 消息的载体,每个消息都会被投到一个或多个队列。
  • Binding : 绑定,它的作用就是把exchange和queue按照路由规则绑定起来.
  • Routing Key : 路由关键字,exchange根据这个关键字进行消息投递。决定消息投递到那个队列上去的规则被称作路由键,队列通过路由键绑定到交换器。
  • Producer : 创建消息,然后发布(发送)到代理服务器(RabbitMQ).
  • Consumer : 消息消费者,就是接受消息的程序.
  • Channel : 消息通道,在客户端的每个连接里,可建立多个channel
  • AMQP消息路由必须有三部分:交换器、队列和绑定。生产者把消息发布到交换器上;消息最终到达队列,并被消费者接收;绑定决定了消息如何从路由器路由到特定的队列上。

常见交换器介绍

  • Direct Exchange
    处理路由键。需要将一个队列绑定到交换器上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换器上要求路由键 “abc”,则只有被标记为“abc”的消息才被转发,不会转发abc.def,也不会转发dog.ghi,只会转发abc。
    包含一个空白字符串名称的默认交换器。当声明一个队列时,它会自动绑定到默认交换器,并以队列名称作为路由键。

  • Fanout Exchange
    不处理路由键。你只需要简单的将队列绑定到交换器上。一个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换器转发消息是最快的。
    这种类型的交换器,会将消息广播到绑定的队列上。消息通信模式很简单:当你发送一条消息到fanout交换器时,它会把消息投递给所有附加在此交换器上的队列,允许你对单挑信息做不同反应的方式。

  • Topic Exchange
    将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号‘*’匹配不多不少一个词。因此“abc.#”能够匹配到“abc.def.ghi”,但是“abc.*” 只会匹配到“abc.def”。
    这类交换器允许你实现有趣的消息通信场景,它使得来自不同源头的消息能够到达同一队列。

集成步骤

环境配置

官网地址:https://www.rabbitmq.com/news.htmlSpringBoot 集成 RabbitMQ_第1张图片
可以看到支持RabbitMQ的Erlang版本,安装版本支持的环境

引入依赖

        
            org.springframework.boot
            spring-boot-starter-amqp
        

项目配置

SpringBoot 可读取application中的配置数据,也可以自定义RabbitMQ连接连接工厂,重写RabbitTemplate的bean对象,如果业务复杂可以建多个链接工厂,细节化配置,这里使用配置文件设置参数。

yml配置
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
    virtual-host: /                         # 虚拟机地址 默认/
    publisher-returns: true
    publisher-confirm-type: simple  # 发布确认类型 
    listener:
      simple:
        retry:                              # 重试
          enabled: true                 # 是否开启重试
          multiplier: 1                   # 每次重试间隔时间比例
          max-attempts: 3             # 最大重试次数
          initial-interval: 3000ms    # 初始间隔时间
          max-interval: 5000ms      # 最大间隔时间

样例Springboot注解简介

@EnableRabbit
配置类中加上@EnableRabbit开启基于注解的RabbitMq
<

你可能感兴趣的:(Java,队列,MQ,rabbitmq,队列,java)