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.mzph.cn/news/691031.shtml

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

相关文章

基于python+mysql的宠物领养网站系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括&#xff1a;首页、宠物详情页、用户中心模块。后台功能包括&#xff1a;总览、领养管理、宠物管理、分类…

简单介绍一下WebRTC中NACK机制

WebRTC中的NACK&#xff08;Negative Acknowledgement&#xff09;是一种用于实时通信的网络协议&#xff0c;用于在传输过程中检测和纠正丢包。当接收方检测到数据包丢失时&#xff0c;它会发送一个NACK消息给发送方&#xff0c;请求重新发送丢失的数据包。 NACK的工作原理如…

使用Hutool的ExcelUtil工具导出Excel时遇到的异常

遇到的异常信息&#xff1a; You need to add dependency of ‘poi-ooxml’ to your project, and version > 4.1.2nested exception is java.lang.NoSuchFieldError: Factoryorg.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookorg.apache.logging.log4j.Log…

忘记管理员密码

1、在/home/jenkins/config.xml中删除&#xff1a; <useSecurity>true</useSecurity><authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAccess>false</denyAnonymousRea…

uniapp校验app版本并更新

最近用uniapp写了一个安卓壳子做app&#xff0c;遇到一个需求&#xff0c;校验app版本并更新 通过对比线上版本号和app自己的版本号的差异&#xff0c;唤起更新弹窗 相关代码 App.vue <script>export default {onLaunch: function() {this.checkVersion()},onShow: f…

Hack The Box-Office

端口扫描&信息收集 使用nmap对靶机进行扫描 nmap -sC -sV 10.10.11.3开放了80端口&#xff0c;并且注意到该ip对应的域名为office.htb&#xff0c;将其加入到hosts文件中访问之 注意到扫描出来的还有robots文件&#xff0c;经过尝试后只有administrator界面是可以访问的 …

详解平面点云面积计算

部分代码展示&#xff1a; &#xff08;1&#xff09;利用格网法计算面积&#xff1a; //&#xff08;2&#xff09;测试使用格网法计算平面点云面积 void main() {char *inputpath "D:\\testdata\\data.txt";vector<pcl::PointXYZ> points ReadPointXYZIn…

Java 21 新特性的扫盲级别初体验

一、前言 JDK 21 于 2023 年 9 月发布&#xff0c;作为目前讨论热度最高的JDK&#xff0c;虽然大家都开玩笑说你发任你发&#xff0c;我用Java8&#xff0c;但是作为一个Javaer&#xff0c;对JDK21的新特性还是要有所了解的。 以下是 JDK 21 的新功能列表&#xff1a; 虚拟线…

element-plus日期选择器2次封装

预期效果 官网默认样式&#xff1a; 修改后的样式&#xff1a; 代码实现 DatePicker.vue <template><div class"date-picker-container"><el-date-picker v-model"date" change"handleChange" type"date" value-for…

CMake无Name和Value部分界面

鼠标会变成以下 拉开后就 出现想要的部分

PTA-九九乘法表

从键盘输入n&#xff08;n为1~9&#xff09;&#xff0c;输出九九乘法表的前n行&#xff0c;每个式子按“a * b c”形式输出&#xff0c;其中a和b各占1位列宽&#xff0c;c占4位列宽并左对齐。 输入格式: 一个1~9之间的整数n&#xff0c;如&#xff1a;9 输出&#xff1a; …

牛客小白月赛87 D 小苯的IDE括号问题(hard)

原题链接&#xff1a;D-小苯的IDE括号问题&#xff08;hard&#xff09; 题目大意&#xff1a;给定一个长度为n的字符串&#xff0c;字符串由&#xff08;&#xff0c;&#xff09;和I构成&#xff0c;m组询问&#xff0c;如果输入backspace&#xff0c;如果I左右是&#xff0…

15个学习Go语言的网站推荐

1. Tour of Go 网站地址&#xff1a;tour.golang.org 网站介绍&#xff1a;Tour of Go是一个关于Go语言特性的交互式游览和教程 2. Go by Example 网站地址&#xff1a;gobyexample.com 网站介绍&#xff1a;Go by Example是一个通过一系列可执行代码实例来学习Go语言的优…

Java解决删除某些元素后的数组均值

Java解决删除某些元素后的数组均值 01 题目 给你一个整数数组 arr &#xff0c;请你删除最小 5% 的数字和最大 5% 的数字后&#xff0c;剩余数字的平均值。 与 标准答案 误差在 10-5 的结果都被视为正确结果。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,2,2,2,2,2,…

最优字符串分隔符:零宽度空格和字符

引言 在文本处理和格式化中&#xff0c;选择合适的分隔符是至关重要的。 本文将在介绍两个不常见但功能强大的分隔符&#xff1a;零宽度空格和&#x10000;字符。 零宽度空格&#xff08;Zero Width Space&#xff09; 零宽度空格是Unicode字符集中的一个特殊字符&#xff…

2024前端面试准备之uniapp篇

全文链接!!!!!!! 1. UniApp和其他跨平台框架(如React Native、Flutter)有什么区别? 语言和技术栈:UniApp使用Vue.js作为开发语言和技术栈,而React Native使用React.js,Flutter使用Dart语言。开发者可以根据自己的技术背景和偏好选择合适的框架。 性能和体验:Uni…

vue3项目配置按需自动引入自定义组件unplugin-vue-components

我们通常在项目中&#xff0c;需要手动引入自定义的各种组件&#xff0c;如果涉及的页面功能比较多的话&#xff0c;光是import的长度都能赶上春联了。 如果&#xff0c;能有一个插件帮我们实现自动引入&#xff0c;是不是要谢天谢地了呢&#xff1f; 接下来就进入我们的主角u…

uni-app判断不同端

大家好&#xff0c;今天给大家分享的知识是在uni-app中如何区分是在什么端操作的程序 话不多说直接上代码&#xff1a; // #ifdef APP-PLUS<view>APP端</view>// #endif// #ifdef H5<view>H5端</view>// #endif// #ifdef MP<view>小程序端</v…

centos中安装go

安装过程 &#xff08;1&#xff09;源码二进制下载地址 wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz &#xff08;2&#xff09;将下载的二进制包解压至 /usr/local目录。 tar -C /usr/local/ -xzf go1.13.5.src.tar.gz &#xff08;3&#xff09;设置环…

XR行业首家|李未可科技通过深度合成服务算法备案

2月18日&#xff0c;国家网信办发布第四批深度合成服务算法备案。 根据《互联网信息服务深度合成管理规定》第十九条规定&#xff0c;具有舆论属性或者社会动员能力的深度合成服务提供者&#xff0c;应当按照《互联网信息服务算法推荐管理规定》履行备案和变更、注销备案手续。…