zoukankan      html  css  js  c++  java
  • Spring Boot整合RabbitMQ

     转自:https://www.cnblogs.com/lusaisai/p/13019822.html 

    在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQ https://github.com/spring-projects/spring-amqp

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

    搭建生产者工程

    1. 创建工程

    创建生产者工程springboot-rabbitmq-producer

    2. 添加依赖

    复制代码
       <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
        </parent>
    
        <dependencies>
            <!-- 使用springmvc来进行测试 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--amqp的起步依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>
            <!--单元测试类-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
        </dependencies>
    复制代码

    3. 启动类

    复制代码
    @SpringBootApplication
    public class ProducerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ProducerApplication.class, args);
        }
    
    }
    复制代码

    4. 配置RabbitMQ

    application.yml,内容如下:

    复制代码
    #tomcat端口
    server:
      port: 8888
    #Rabbitmq的配置
    spring:
      rabbitmq:
        host: 192.168.75.163
        port: 5672
        virtual-host: /hello
        username: test01
        password: test01
    复制代码

    创建RabbitMQ队列与交换机绑定的配置类RabbitMQConfig

    复制代码
    /**
     * 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();
        }
    
    }
    复制代码

    5 消息发送Controller

    复制代码
    @RestController
    public class SendMsgController {

    //注入RabbitMQ的模板
    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
    * 测试
    */
    @GetMapping("/sendmsg")
    public String sendMsg(@RequestParam String msg, @RequestParam String key){
    /**
    * 发送消息
    * 参数一:交换机名称
    * 参数二:路由key: item.springboot-rabbitmq,符合路由item.#规则即可
    * 参数三:发送的消息
    */
    rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE ,key ,msg);
    //返回消息
    return "发送消息成功!";
    }
    }
    复制代码

    6发送消息

    http://localhost:8888/sendmsg?msg=springboot-rabbitmq-producer&key=item.springboot-rabbitmq

    查看结果

     

     

    搭建消费者工程

    1. 创建工程

    创建消费者工程springboot-rabbitmq-consumer

    2. 添加依赖

    复制代码
    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>
        </dependencies>
    复制代码

    3. 启动类

    复制代码
    @SpringBootApplication
    public class ConsumerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApplication.class, args);
        }
    }
    复制代码

    4. 配置RabbitMQ

    application.yml,内容如下:

    复制代码
    #端口,注意端口不要冲突
    server:
      port: 9999
    #Rabbitmq的配置
    spring:
      rabbitmq:
        host: 192.168.75.163
        port: 5672
        virtual-host: /hello
        username: test01
        password: test01
    复制代码

    5. 消息监听处理类MyListener

    复制代码
    @Component
    public class MyListener {

    @RabbitListener(queues = "item_queue")
    public void msg(String msg){
    System.out.println("消费者消费消息了:"+msg);
    //TODO 这里可以做异步的工作
    }
    }
    复制代码

    6. 测试(消息内容为test)

    http://localhost:8888/sendmsg?msg=test&key=item.springboot-rabbitmq

    查看结果

     

  • 相关阅读:
    springboot 梳理2--配置druid数据源
    springboot 梳理1--简单整合mybatis
    springmvc 梳理13--@RequestBody 和 @ResponseBody
    springmvc 梳理12--拦截器
    springmvc 梳理11--restful
    如何快速成长为技术大牛?阿里资深技术专家的总结亮了
    一句话+一张图理解——数据结构与算法
    .net 开发人员的瓶颈和职业发展
    c# 对象相等性和同一性
    c# 连等的写法都做了什么?
  • 原文地址:https://www.cnblogs.com/javalinux/p/14323518.html
Copyright © 2011-2022 走看看