Rabbitmq入门与应用(三)-RabbitMQ开发流程

RabbitMQ开发流程

引入依赖

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

配置MQ

最简配置

spring:rabbitmq:host: mq的安装机器ipport: 5672username: adminpassword: 123

创建队列

在配置类中创建队列对象。

@Configuration
public class SimpleQueueConfig {@Beanpublic Queue queue(){}
}

生产者

  • private RabbitTemplate rabbitTemplate; //rabbitmq操作对象
  • convertAndSend : 发送方法
image-20231119165443912
if (m > 0) {Long maotai = stringRedisTemplate.opsForValue().decrement("maotai");//原子性redis操作log.debug("抢购茅台一瓶,还剩:{}瓶", maotai);s1 =System.currentTimeMillis();//操作数据库修改数据rabbitTemplate.convertAndSend("hello_queue",1);s2 =System.currentTimeMillis();log.debug("耗时:{}ms",(s2-s1));return HttpResp.success("去库存成功:"+(s2-s1));} else {return HttpResp.failed("0");}

消费者

  • @RabbitListener(queues = “要监听的队列名称”)
  • @RabbitHandler //要使用RabbitMQ处理的方法

image-20231119170605198

@RabbitListener(queues = "hello_queue")
@Override
public void updateByBookIdMq(Long bookId) throws InterruptedException {LambdaQueryWrapper<Store>queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(Store::getBook, bookId);Store store = storeDao.selectOne(queryWrapper);if (store.getNum() > 0) {int left = store.getNum() - 1;Thread.sleep(50);store.setNum(left);storeDao.updateById(store);log.debug("数据库修改数据完成,库存量:{}", left);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/478170.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS】鸿蒙开发之prompt组件——第3.3章

prompt组件简介 prompt组件一共有三种弹出框: showToast&#xff08;&#xff09;showDialog&#xff08;&#xff09;showActionMenu&#xff08;&#xff09; 一.显示一个Toast showToast函数内参数说明如下: message&#xff1a;提示文本&#xff0c;必填项。 duratio…

GWO优化kmeans

GWO&#xff08;灰狼优化器&#xff09;是一种群体智能优化算法&#xff0c;它模拟了灰狼的社会结构和狩猎行为。GWO算法通过模拟灰狼的等级制度、狩猎策略和搜索机制来寻找问题的最优解。而K-means是一种经典的聚类算法&#xff0c;用于将数据点划分为K个簇。将GWO优化算法应用…

【SpringBoot3】Spring Security 常用注解

注&#xff1a;本文基于Spring Boot 3.2.1 以及 Spring Security 6.2.1 一、Spring Security 常用注解 Spring Security 6 的常用注解包括以下几种&#xff0c;通过这些注解可以更加方便的控制资源权限。 Secured &#xff1a;方法执行前检查&#xff0c;直接判断有没有对应的…

linux高级作业

作业需求 1、openEuler 二进制方式安装MySQL 8.0.x。 二、备份数据库 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式&#xff0c;能够让该备份覆盖已有数据库而不需要手动删除原有数据库 5.直接将MySQL数据库压缩备份 第一题 1、openEuler 二进制方式…

大端模式和小端模式的区别

参考文章 https://blog.csdn.net/weixin_44057803/article/details/130670865 一、为什么会有大小端之分&#xff1f; 这是因为在计算机系统中&#xff0c;我们是以字节为单位的&#xff0c;每个地址单元都对应着一个字节&#xff0c;一个字节为8bit。但是在C语言中除了8bit的…

合理利用pandas来简化大量请求数据组装工作

工作场景 本次我们开发了一个新功能&#xff0c;为了验证它是否合理&#xff0c;我们需要从线上导出一批真实的用户数据来进行模拟请求&#xff0c;以此来验证功能的完整性。 例如一个很简单的功能&#xff0c;我们是一个对学生成绩进行数据分析的系统&#xff0c;各学校会将…

Jmeter的自动化测试实施方案(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Jmeter是目前最流行的一种测试工具&#xff0c;基于此工…

OpenAI 发布文生视频大模型 Sora,AI 视频要变天了,视频创作重新洗牌!AGI 还远吗?

一、一觉醒来&#xff0c;AI 视频已变天 早上一觉醒来&#xff0c;群里和朋友圈又被刷屏了。 今年开年 AI 界最大的震撼事件&#xff1a;OpenAI 发布了他们的文生视频大模型 Sora。 OpenAI 文生视频大模型 Sora 的横空出世&#xff0c;预示着 AI 视频要变天了&#xff0c;视…

柚见(伙伴匹配系统)第六期

开发主页 开发主页&#xff08;默认推荐和自己兴趣相当的用户&#xff09;优化主页的性能&#xff08;缓存 定时任务 分布式锁&#xff09; 前端recommend 最简单&#xff1a;直接 list 列表 cv searchResult页面的代码 修改 后端接口 数据内容下边距修改 提取用户信息卡…

11. Springboot集成Dubbo3(二)示例demo

目录 1、前言 2、注册中心 3、快速开始 3.1、添加dubbo3依赖 3.2、dubbo3-api ​编辑 3.3、dubbo3-server 3.3.1、添加依赖 3.3.2、实现IUserService 3.3.3、添加配置文件application.properties 3.3.4、修改Application启动类 3.3.5、出错解决 3.4、dubbo3-porta…

Android widget基础指南

widget的概念最早是由一名叫Rose的苹果工程师提出&#xff0c;后来经过多方面机缘巧合的发展下&#xff0c;便有了今天Android平台上的小组件widget&#xff0c;一般APP开发可能应用场景较少&#xff0c;最常见的莫过于天气APP的widget。但对于从事IOT或车载方向的同学&#xf…

【机器学习笔记】13 降维

降维概述 维数灾难 维数灾难(Curse of Dimensionality)&#xff1a;通常是指在涉及到向量的计算的问题中&#xff0c;随着维数的增加&#xff0c;计算量呈指数倍增长的一种现象。在很多机器学习问题中&#xff0c;训练集中的每条数据经常伴随着上千、甚至上万个特征。要处理这…