当前位置: 首页 > news >正文

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

RabbitMQ开发流程

引入依赖

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

配置MQ

最简配置

spring:
  rabbitmq:
    host: mq的安装机器ip
    port: 5672
    username: admin
    password: 123

创建队列

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

@Configuration
public class SimpleQueueConfig {

    @Bean
    public 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.dtcms.com/a/8539.html

相关文章:

  • objectMapper、ObjectNode、JsonNode调用接口时进行参数组装
  • Redis篇----第六篇
  • Spring 类型转换、数值绑定与验证(一)— DataBinder
  • 向量数据库Milvus字符串查询
  • 《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_4
  • leetcode hot100单词拆分
  • 物联网和人工智能的融合
  • MFC中对编码文件的操作01
  • 图片搜索接口的应用展示说明
  • 阿里云ECS香港服务器性能强大、cn2高速网络租用价格表
  • Python学习笔记——自定义函数(基础知识)
  • qt-交通路口仿真
  • 数学的雨伞下:理解世界的乐趣
  • openEuler2203 LTS安装并远程桌面接VMware WorkStation Pro 17
  • 找座位 - 华为OD统一考试(C卷)
  • 虽迟但到,Postman终于支持Websocket接口了
  • 备战蓝桥杯 Day8(最长上升子序列LIS模型)
  • 第六章:纹理贴图
  • 认识K8S
  • Job 和 DaemonSet
  • Promise
  • SpringBoot+WebSocket实现即时通讯(四)
  • 二.自定义头文件
  • HTTP的详细介绍
  • 3、windows环境下vscode开发c/c++环境配置(二)
  • 通过Docker Compose的方式在Docker中安装Maven环境
  • 配置基于 AWS CRT 的 HTTP 客户端
  • git常用命令
  • mysql mgr集群部署
  • 从 git 分支中合并特定文件,而不是整个分支的内容