4: Spring Boot 使用RabbitMQ

4: Spring Boot 使用RabbitMQ_第1张图片

1.Windows RabbitMQ安装

  • 官网下载:RabbitMQ-3.7.2.exe
  • 安装完毕进入/sbin目录, 启动CMD
  • 开启管理界面
    
    rabbitmq-plugins.bat list
    
    rabbitmq-plugins.bat enable rabbitmq_management
  • 创建用户, 赋予权限
    
    rabbitmqctl.bat  set_user_tags  tiger  administrator
    
    rabbitmqctl.bat  set_permissions  -p / .* .* .*
  • 访问管理界面: http://127.0.0.1:15672/

2.配置工程

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

    
    
      org.springframework.boot
      spring-boot-starter-amqp
    

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)