美文网首页
4: Spring Boot 使用RabbitMQ

4: Spring Boot 使用RabbitMQ

作者: Peacenloves | 来源:发表于2018-01-24 17:55 被阅读0次

    1.Windows RabbitMQ安装

    • 官网下载:RabbitMQ-3.7.2.exe
    • 安装完毕进入/sbin目录, 启动CMD
    • 开启管理界面
        <!--1.查看已安装插件-->
        rabbitmq-plugins.bat list
        <!--2.开启管理界面-->
        rabbitmq-plugins.bat enable rabbitmq_management
    
    • 创建用户, 赋予权限
        <!--1.创建用户->
        rabbitmqctl.bat  add_user  tiger  123456
        <!--2.赋予角色-->
        rabbitmqctl.bat  set_user_tags  tiger  administrator
        <!--3.设置权限-->
        rabbitmqctl.bat  set_permissions  -p / .* .* .*
    

    2.配置工程

    1.pom配置, 在Spring Boot工程中引入amqp依赖, RabbitMQ为默认实现

        <!--Spring Boot AMQP协议快速启动 包括Boot Starter, Massaging, RabbitMQ-->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
    

    2.配置生产者

    • application.yml配置, 启动端口和RabbitMQ一些初始化配置
        server:
          port: 8081  #应用端口号
        
        spring:
          application:
            name: amqp-provider #应用名称
          rabbitmq:
            host: localhost #RabbitMQ 地址
            port: 5672  #监听端口号
            username: tiger #用户名
            password: 123456  #密码
    
    • 创建Send服务类
        /**
         * 发送消息到RabbitMQ
         * 维护Queue名称
         */
        @Component
        public class AmqpSenderService {
        
            private static final Logger _LOGGER = LoggerFactory.getLogger(AmqpSenderService.class);
        
            @Autowired AmqpTemplate amqpTemplate;
        
            /**
             * 发送消息
             * @param message
             */
            public void send (String message) {
                _LOGGER.info("Send message: {}", message);
                amqpTemplate.convertAndSend("ko-queue", message);
            }
        }
    
    • 单元测试发送消息
        @SpringBootTest
        @RunWith(SpringRunner.class)
        public class AmqpTests {
        
            @Autowired
            AmqpSenderService amqpSenderService;
        
            @Test
            public void sendTest () {
                for (int i = 1; i < 100; i++) {
                    amqpSenderService.send("message" + i);
                }
            }
        
        }
    

    3.配置消费者

    • application.yml配置, 修改端口号, 与provider区别
        server:
          port: 8082  #应用端口号
        
        spring:
          application:
            name: amqp-provider #应用名称
          rabbitmq:
            host: localhost #RabbitMQ 地址
            port: 5672  #监听端口号
            username: tiger #用户名
            password: 123456  #密码
    
    • 创建消息接收
        @Component
        //监听的消息队列
        @RabbitListener(queues = "ko-queue")
        public class RabbitReceiver {
        
            private static final Logger _Logger = LoggerFactory.getLogger(RabbitReceiver.class);
        
            @RabbitHandler
            public void process (String message) {
                _Logger.info("Receiver message: {}", message);
            }
        }
    

    3.启动

    • 启动RabbitMQ: /sbin/rabbitmq-server.bat
    • 启动消费者:AmqpConsumerApplication
    • 启动生产者单元测试:AmqpTests.sendTest()

    4.结束

    5.实例

    Github: Spring Boot 使用RabbitMQ demo

    相关文章

      网友评论

          本文标题:4: Spring Boot 使用RabbitMQ

          本文链接:https://www.haomeiwen.com/subject/ooouaxtx.html