ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-07 11:33:58  阅读:165  来源: 互联网

标签:SpringBoot RabbitMQ 重试 消息 msg true public 具体步骤


文章目录

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_management UI 管控页面的情况
在这里插入图片描述
可见,根据上述测试情况,简单模式下,消息生产者与消息消费者已对接成功,接下来,后续可根据自己的业务代码进行真正的 RabbitMQ 的集成了,后续在我的秒杀项目中关于 RabbitMQ 的应用情况,有时间或许会写一篇文章,今天就写到这了,谢谢 ^v^

标签:SpringBoot,RabbitMQ,重试,消息,msg,true,public,具体步骤
来源: https://blog.csdn.net/m0_46360532/article/details/122360120

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有