【RabbitMQ】SpringBoot 集成 RabbitMQ:文章背景、具体步骤、测试结果

文章目录

1 本文背景

近期在做一个电商秒杀项目,在服务优化的阶段用到了 RabbitMQ 这个消息中间件,让秒杀请求不再瞬时冲击秒杀接口,而是利用消息中间件来让请求如队列般排队而来。

2 具体步骤

下面是最基础的一种 SpringBoot 集成 RabbitMQ 简单队列模式的方式:添加 pom 依赖、 yml 配置、配置类、消息发送者、消息接收者

1、添加 pom 依赖,这里需要添加 amqp,amqp 是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

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

2、yaml 配置文件,各参数说明已给出注释

spring:
	rabbitmq:
        host: 192.168.10.132
        username: guest
        password: guest
        # 虚拟主机
        virtual-host: /
        port: 5672
        listener:
          simple:
            # 消费者最小数量
            concurrency: 10
            # 消费者最大数量
            max-concurrency: 10
            # 限制消费者每次只处理一条消息,处理完再继续下一条消息
            prefetch: 1
            # 启动时是否默认启动容器,默认true
            auto-startup: true
            # 被拒绝时重新进入队列
            default-requeue-rejected: true
        template:
          retry:
            # 发布重试,默认false
            enabled: true
            # 重试时间 默认1000ms
            initial-interval: 1000
            # 重试最大次数,默认3次
            max-attempts: 3
            # 重试最大间隔时间,默认10000ms
            max-interval: 1000
            # 重试间隔的乘数。比如配2.0 第一次等10s,第二次等20s,第三次等40s
            multiplier: 1.0

3、配置类

@Configuration
public class RabbitMQConfig {
    @Bean
    public Queue queue() {
        return new Queue("queue", true);
    }
}

4、消息生产者(发送者)

@Service
@Slf4j
public class MQSender {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send(Object msg) {
        log.info("发送消息:" + msg);
        rabbitTemplate.convertAndSend("queue", msg);
    }
}

5、消息消费者(接收者)

@Service
@Slf4j
public class MQReceiver {

    @RabbitListener(queues = "queue")
    public void receive(Object msg) {
        log.info("接收消息:" + msg);
    }
}

3 测试结果

这里写一个接口调用消息发送者进行消息的发送

/**
* 测试发送 rabbitmq 的消息
 */
@RequestMapping("/mq")
@ResponseBody
public void mq() {
    mqSender.send("Hello");
}

访问此请求
【RabbitMQ】SpringBoot 集成 RabbitMQ:文章背景、具体步骤、测试结果

日志打印情况
【RabbitMQ】SpringBoot 集成 RabbitMQ:文章背景、具体步骤、测试结果

rabbitmq_management UI 管控页面的情况
【RabbitMQ】SpringBoot 集成 RabbitMQ:文章背景、具体步骤、测试结果
可见,根据上述测试情况,简单模式下,消息生产者与消息消费者已对接成功,接下来,后续可根据自己的业务代码进行真正的 RabbitMQ 的集成了,后续在我的秒杀项目中关于 RabbitMQ 的应用情况,有时间或许会写一篇文章,今天就写到这了,谢谢 ^v^

上一篇:RabbitMQ学习-其他队列模式


下一篇:RabbitMQ上手记录–part 6-Shovel