iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >SpringBoot怎么整合ActiveMQ实现秒杀队列
  • 181
分享到

SpringBoot怎么整合ActiveMQ实现秒杀队列

2024-04-02 19:04:59 181人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“SpringBoot怎么整合ActiveMQ实现秒杀队列”,内容详细,步骤清晰,细节处理妥当,希望这篇“springBoot怎么整合ActiveMQ实现秒杀队列”文章能帮助大家解决疑

本文小编为大家详细介绍“SpringBoot怎么整合ActiveMQ实现秒杀队列”,内容详细,步骤清晰,细节处理妥当,希望这篇“springBoot怎么整合ActiveMQ实现秒杀队列”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

前言

在实际生产环境中中,通常生产者和消费者会是两个独立的应用,这样才能通过消息队列实现了服务解耦和广播。因为此项目仅是一个案例,为了方便期间,生产和消费定义在了同一个项目中。

基础配置

pom.xml 添加依赖:

<!-- activemq -->

<dependency>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-starter-activemq</artifactId>

</dependency>

application.properties 基础配置:

# activemq 基础配置

#spring.activemq.broker-url=tcp://47.94.232.109:61616

# 生产环境设置密码

#spring.activemq.user=admin

#spring.activemq.passWord=123456

#spring.activemq.in-memory=true

#spring.activemq.pool.enabled=false

项目集成

定义生产者:

import javax.jms.Destination;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jms.core.JmsMessagingTemplate;

import org.springframework.stereotype.Component;

@Component

public class ActiveMQSender {

 @Autowired

 private JmsMessagingTemplate jmsTemplate; 

 

 public void sendChannelMess(Destination destination, final String message){

 jmsTemplate.convertAndSend(destination, message);

 }

}

定义消费者:

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jms.annotation.JmsListener;

import org.springframework.stereotype.Service;

import com.itstyle.seckill.common.entity.Result;

import com.itstyle.seckill.common.enums.SeckillStatEnum;

import com.itstyle.seckill.common.Redis.RedisUtil;

import com.itstyle.seckill.common.websocket.WEBSocketServer;

import com.itstyle.seckill.service.ISeckillService;

@Service

public class ActiveMQConsumer {

  @Autowired

 private ISeckillService seckillService;

 @Autowired

 private RedisUtil redisUtil; 

 // 使用JmsListener配置消费者监听的队列,其中text是接收到的消息

 @JmsListener(destination = "seckill.queue")

 public void receiveQueue(String message) {

 //收到通道的消息之后执行秒杀操作(超卖)

 String[] array = message.split(";"); 

 Result result = seckillService.startSeckilDBPCC_TWO(Long.parseLong(array[0]), Long.parseLong(array[1]));

 if(result.equals(Result.ok(SeckillStatEnum.SUCCESS))){

 WebSocketServer.sendInfo(array[0].toString(), "秒杀成功");//推送给前台

 }else{

 WebSocketServer.sendInfo(array[0].toString(), "秒杀失败");//推送给前台

 redisUtil.cacheValue(array[0], "ok");//秒杀结束

 }

 }

}

测试案例:

@apiOperation(value="秒杀五(ActiveMQ分布式队列)",nickname="科帮网")

@PostMapping("/startActiveMQQueue")

public Result startActiveMQQueue(long seckillId){

 seckillService.deleteSeckill(seckillId);

 final long killId = seckillId;

 LOGGER.info("开始秒杀五");

 for(int i=0;i<1000;i++){

 final long userId = i;

 Runnable task = new Runnable() {

 @Override

 public void run() {

 if(redisUtil.getValue(killId+"")==null){

 Destination destination = new ActiveMQQueue("seckill.queue");

 //思考如何返回给用户信息ws

 activeMQSender.sendChannelMess(destination,killId+";"+userId);

 }else{

 //秒杀结束

 }

 }

 };

 executor.execute(task);

 }

 try {

 Thread.sleep(10000);

 redisUtil.cacheValue(killId+"", null);

 Long seckillCount = seckillService.getSeckillCount(seckillId);

 LOGGER.info("一共秒杀出{}件商品",seckillCount);

 } catch (InterruptedException e) {

 e.printStackTrace();

 }

 return Result.ok();

}

注意事项

spring-boot-starter-activemq 依赖即可默认采用内嵌的 ActiveMQ,这个跟 elasticsearch 是一样的,测试的小伙伴可以不用安装,注释掉相关参数,使用默认即可。

如果自行安装 ActiveMQ 记得配置防火墙/安全组,配置web访问密码以及连接密码。

在生产环境下尽量还是采用外部 activemq 服务,提高扩展性、稳定性、可维护性。

读到这里,这篇“SpringBoot怎么整合ActiveMQ实现秒杀队列”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网html频道。

--结束END--

本文标题: SpringBoot怎么整合ActiveMQ实现秒杀队列

本文链接: https://www.lsjlt.com/news/91013.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot怎么整合ActiveMQ实现秒杀队列
    本文小编为大家详细介绍“SpringBoot怎么整合ActiveMQ实现秒杀队列”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么整合ActiveMQ实现秒杀队列”文章能帮助大家解决疑...
    99+
    2022-10-19
  • Springboot整合ActiveMQ实现消息队列的过程浅析
    目录pom中导入坐标书写yml配置业务层代码监听器代码业务层代码确保你启动了自己电脑的activemq。 pom中导入坐标 <dependency> ...
    99+
    2023-02-10
    Springboot整合ActiveMQ Springboot ActiveMQ消息队列
  • Redis消息队列怎么实现秒杀
    要实现秒杀功能,可以使用Redis的消息队列来进行异步处理。下面是一种基本的实现方法:1. 准备工作:创建一个商品库存键值对,如"s...
    99+
    2023-10-11
    Redis
  • SpringBoot怎么整合RabbitMQ处理死信队列和延迟队列
    今天小编给大家分享一下SpringBoot怎么整合RabbitMQ处理死信队列和延迟队列的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2023-06-30
  • 微服务Spring Boot 整合Redis 阻塞队列实现异步秒杀下单思路详解
    目录⛅引言一、秒杀优化 - 异步秒杀思路二、秒杀优化 - 基于Redis完成秒杀资格判断三、基于阻塞队列完成异步秒杀下单四、测试程序五、源码地址⛅引言 本章节,介绍使用阻塞队列实现秒...
    99+
    2022-11-13
    Spring Boot 整合Redis 阻塞队列 springboot异步秒杀下单
  • SpringBoot整合RabbitMQ实现交换机与队列的绑定
    目录简介配置方法概述法1:配置类(简洁方法)(推荐)法2:配置类(繁琐方法)(不推荐)法3:使用方配置(不推荐)法4:MQ服务端网页(不推荐)简介 本文用实例介绍SpringBoot...
    99+
    2022-11-13
  • SpringBoot整合RabbitMQ实现延迟队列的示例详解
    目录如何保证消息不丢失什么是消息投递可靠性ttl死信队列什么是死信队列消息有哪几种情况成为死信延迟队列springboot整合rabbitmq实现订单超时自动关闭如何保证消息不丢失 ...
    99+
    2023-05-16
    SpringBoot RabbitMQ实现延迟队列 SpringBoot RabbitMQ延迟队列 SpringBoot RabbitMQ队列 SpringBoot RabbitMQ
  • SpringBoot怎么整合Redis实现序列化存储Java对象
    今天小编给大家分享一下SpringBoot怎么整合Redis实现序列化存储Java对象的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • 怎么在springboot中用redis实现消息队列
    本篇内容主要讲解“怎么在springboot中用redis实现消息队列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在springboot中用redis实现消息队列”吧!准备阶段安装redi...
    99+
    2023-06-19
  • php怎么配合本地文件实现队列
    要使用本地文件实现队列,可以使用PHP的文件操作函数来读取和写入文件。以下是一个简单的示例: class Queue { p...
    99+
    2023-10-22
    php
  • SpringBoot怎么结合Redis实现序列化
    这篇文章主要介绍了SpringBoot怎么结合Redis实现序列化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么结合Redis实现序列化文章都会有所收获,下面我们一起来看看吧。配置类配置...
    99+
    2023-07-02
  • SpringBoot怎么整合Spring Cache实现Redis缓存
    今天小编给大家分享一下SpringBoot怎么整合Spring Cache实现Redis缓存的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2023-07-02
  • Springboot怎么整合minio实现文件服务
    本篇内容介绍了“Springboot怎么整合minio实现文件服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先pom文件引入相关依赖&...
    99+
    2023-06-30
  • SpringBoot怎么整合Mongodb实现增删查改
    今天小编给大家分享一下SpringBoot怎么整合Mongodb实现增删查改的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一...
    99+
    2023-06-30
  • SpringBoot中怎么通过整合Redis实现管道
    这篇文章给大家介绍SpringBoot中怎么通过整合Redis实现管道,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. Redis 之管道(pipeline)执行一个Redis命令,Redis客户端和Redis服务器...
    99+
    2023-06-20
  • SpringBoot怎么整合freemarker实现代码生成器
    本文小编为大家详细介绍“SpringBoot怎么整合freemarker实现代码生成器”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么整合freemarker实现代码生成器”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-05
  • SpringBoot怎么整合Redis实现热点数据缓存
    本篇内容主要讲解“SpringBoot怎么整合Redis实现热点数据缓存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合Redis实现热点数据缓存”吧!我们以IDEA ...
    99+
    2023-07-05
  • SpringBoot怎么整合Redis实现高并发数据缓存
    这篇文章主要讲解了“SpringBoot怎么整合Redis实现高并发数据缓存”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么整合Redis实现高并发数据缓存”吧!什么是...
    99+
    2023-07-05
  • Springboot整合Shiro怎么实现登录与权限校验
    这篇文章主要介绍“Springboot整合Shiro怎么实现登录与权限校验”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Springboot整合Shiro怎么实现登录与权限校验”文章能帮助大家解决问...
    99+
    2023-06-30
  • springboot怎么整合shiro实现多验证登录功能
    这篇“springboot怎么整合shiro实现多验证登录功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springbo...
    99+
    2023-06-08
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作