Spring Boot 整合 RabbitMQ

Posted MoYu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 整合 RabbitMQ相关的知识,希望对你有一定的参考价值。

Spring Boot 整合 RabbitMQ

简介

在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQ

尤其是在spring boot项目中只需要引入对应的amqp启动器依赖即可,方便的使用RabbitTemplate发送消息,使用注解接收消息。

一般在开发过程中:

生产者工程:

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

消费者工程:

  1. application.yml文件配置RabbitMQ相关信息
  2. 创建消息处理类,用于接收队列中的消息并进行处理

搭建生产者工程

1.创建生产者项目

创建一个Spring Boot项目:

2.导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

3.配置项目

3.1 配置文件

#端口
server.port=8111

#rabbitmq配置
#这里是自己的ip地址
spring.rabbitmq.host=192.168.57.129   
spring.rabbitmq.port=5672
#自己设置的有权限的账号密码
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin

3.2 RabbitMQ配置类

@Configuration
public class RabbitMQConfig {
    //交换机名称
    public static final String ITEM_TOPIC_EXCHANGE = "item_topic_exchange";
    //队列名称
    public static final String ITEM_QUEUE = "item_queue";
    //声明交换机
    @Bean("itemTopicExchange")
    public Exchange topicExchange(){
        return ExchangeBuilder.topicExchange(ITEM_TOPIC_EXCHANGE).durable(true).build();
    }
    //声明队列
    @Bean("itemQueue")
    public Queue itemQueue(){
        return QueueBuilder.durable(ITEM_QUEUE).build();
    }
    //绑定队列和交换机
    @Bean
    public Binding itemQueueExchange(@Qualifier("itemQueue") Queue queue,
                                     @Qualifier("itemTopicExchange") Exchange exchange){
        return BindingBuilder.bind(queue).to(exchange).with("item.#").noargs();
    }
}

3.3 发送消息控制类

@RestController
public class SendMsgController {
    //注入rabbitmq模板
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @GetMapping("/sendmsg")
    public String sendMsg(@RequestParam String msg,@RequestParam String key){
        /**
         * 发送消息
         *  参数1:交换机名称
         *  参数2:路由 key
         *  参数3:发送的消息
         */
        rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE,key,msg);
        //返回消息
        return "发送消息成功";
    }
}

搭建消费者工程

1.创建生产者项目

创建一个Spring Boot项目:

2.导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

3.创建消费者类

@Component
public class MyListener {
    @RabbitListener(queues = "item_queue")
    public void msg(String msg){
        System.out.println("消费者运行:"+msg);
    }
}

运行测试

路径为:localhost:8111/sendmsg?msg=这是一个测试鸭&key=item.test

  • 先启动生产者工程

  • 访问这个路径,会显示发送消息成功 (这时候 队列 和 交换机 都已经创建了)

  • 启动消费者工程

  • 再次访问路径

  • 查看结果

个人博客为:
MoYu\'s HomePage

以上是关于Spring Boot 整合 RabbitMQ的主要内容,如果未能解决你的问题,请参考以下文章

[Spring boot] Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接

Spring Boot 整合 RabbitMQ

Spring Boot 整合 RabbitMQ

spring boot 1.5.4 整合rabbitMQ(十七)

Spring Boot 整合 RabbitMQ

Spring Boot整合RabbitMQ