• Spring Boot整合RabbitMQ



    一、思路

    一般在开发过程中
    生产者工程:
    1. application.yml文件配置RabbitMQ相关信息;
    2. 在生产者工程中编写配置类,用于创建交换机和队列,并进行绑定
    3. 注入RabbitTemplate对象,通过RabbitTemplate对象发送消息到交换机
    消费者工程:
    1. application.yml文件配置RabbitMQ相关信息
    2. 创建消息处理类,用于接收队列中的消息并进行处理

    二、步骤

    1.配置RabbitMQ
    1)配置文件
    创建application.yml,在生产者和消费者里面都有。内容如下:

    spring:
      rabbitmq:
        host: 172.16.98.133 #主机ip
        port: 5672 #端口
        username: guest
        password: guest
        virtual-host: /

    2.Producer

    RabbitMQConfig:

     1 /**
     2  * @Configuration可理解为用spring的时候xml里面的<beans>标签
     3  *
     4  * @Bean可理解为用spring的时候xml里面的<bean>标签
     5  */
     6 @Configuration
     7 public class RabbitMQConfig {
     8 
     9     //0.创建交换机和队列
    10     public static final String EXCHANGE_NAME = "boot_topic_exchange";
    11     public static final String QUEUE_NAME = "boot_queue";
    12 
    13     //1.交换机
    14     @Bean("bootExchange")
    15     public Exchange bootExchange(){
    16         return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
    17     }
    18 
    19     //2.Queue 队列
    20     @Bean("bootQueue")
    21     public Queue bootQueue(){
    22         return QueueBuilder.durable(QUEUE_NAME).build();
    23     }
    24 
    25     //3. 队列和交互机绑定关系 Binding
    26     /*
    27         1. 知道哪个队列
    28         2. 知道哪个交换机
    29         3. routing key
    30         @Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的
    31      */
    32     @Bean
    33     public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){
    34         return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
    35     }
    36 }
    View Code

    3.Consumer:

    RabbimtMQListener:
     1 //@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
     2 @Component
     3 public class RabbimtMQListener {
     4 
     5     //@RabbitListener注解指定目标方法来作为消费消息的方法,通过注解参数指定所监听的队列或者Binding。
     6     @RabbitListener(queues = "boot_queue")
     7     public void ListenerQueue(Message message){
     8         //System.out.println(message);
     9         System.out.println(new String(message.getBody()));
    10     }
    11 }
  • 相关阅读:
    2020年7月15日Java学习日记
    2020年7月14日Java学习日记
    2020年7月13日Java学习日记
    2020年7月12日Java学习日记
    2020年7月11日Java学习日记
    2020年7月10日Java学习日记
    2020年7月9日Java学习日记
    2020年7月8日Java学习日记
    链式栈(Chain stack)
    Codeforces-1375-D-Replace by MEX
  • 原文地址:https://www.cnblogs.com/aaaazzzz/p/12827589.html
Copyright © 2020-2023  润新知