springboot整合rabbitmq,及各类型交换机详解

RabbitMQ交换机:

一.交换机的作用

如果直接发送信息给一条队列,而这一消息需要多个队列的的多个消费者共同执行,可此时只会有一个队列的一个消费者接收该消息并处理,其他队列的消费者无法获取消息并执行。所以此时就需要交换机接收消息后,按照规则进行路由转发到绑定的所有队列。

二.交换机类型

RabbitMQ主要有三种类型交换机:

1. Fanout Exchange:广播模式,该交换机将接收到的消息广播到每一个跟其绑定的队列

2. Direct Excahange:定向交换机,把接收到的消息根据规则路由到指定的队列,也就是发送到属于生产者指定的RoutingKey的队列上

  •  消费者需要设置绑定队列和交换机
  • 生产者发布消息是需要指定RoutingKey

3. Topi Exchange:话题交换机,跟DirectExchange类似,区别在于 RoutingKey可以是多个单词列表,且以 . 分割

  •  且可以使用通配符
  • # : 表示0或多个单词
  • * : 表示一个单词 

 springboot整合rabbitmq:

通过SpringAMQP整合springboot以及rabbitmq

一. 导入依赖


    org.springframework.boot
    spring-boot-starter-amqp
二. 添加配置yaml 
spring: 
   rabbitmq:
    host: 127.0.0.1  #主机名
    prot: 15672      #端口
    virtual-host: /  #虚拟主机
    username: guest   #用户名
    password: guest   #密码
    listener:   # 任务模型时的接收者配置
      simple:
        prefecth: 1 #每次读取一条消息,处理完成才能获取下一个消息
三,创建生产者

生产者只负责发送消息,不需要声明队列

springboot整合rabbitmq,及各类型交换机详解_第1张图片

四,创建消费者

消费者需要声明创建队列和交换以及绑定关系。

有基于bean方式创建,也有基于注解方式创建

但基于bean方式具有缺陷,比如当需要消费多个RoutingKey值的队列时候,就需要一直创建bean

所以常使用基于注解的方式创建

消费者类是一个监听器,通过@Component交由spring控制,然后设置@RabbitListener注解属性实现

springboot整合rabbitmq,及各类型交换机详解_第2张图片

 然后直接运行springboot就会自动创建交换机,队列,绑定关系以及RoutingKey

springboot整合rabbitmq,及各类型交换机详解_第3张图片

springboot整合rabbitmq,及各类型交换机详解_第4张图片

springboot整合rabbitmq,及各类型交换机详解_第5张图片

你可能感兴趣的:(java-rabbitmq,spring,boot,rabbitmq,java)