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

RabbitMQ开发流程

引入依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

配置MQ

最简配置

yml 复制代码
spring:
  rabbitmq:
    host: mq的安装机器ip
    port: 5672
    username: admin
    password: 123

创建队列

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

java 复制代码
@Configuration
public class SimpleQueueConfig {

    @Bean
    public Queue queue(){
        
    }
}

生产者

  • private RabbitTemplate rabbitTemplate; //rabbitmq操作对象
  • convertAndSend : 发送方法
java 复制代码
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处理的方法
java 复制代码
@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);
    }
}
相关推荐
Hello.Reader23 分钟前
Kafka 4.0 五大 API 选型指南、依赖坐标、上手示例与最佳实践
分布式·kafka·linq
鼠鼠我捏,要死了捏1 小时前
Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析
kafka·rabbitmq·rocketmq
Moss Huang3 小时前
docker-runc not installed on system
java·docker·容器
麦兜*5 小时前
Spring Boot 集成 Docker 构建与发版完整指南
java·spring boot·后端·spring·docker·系统架构·springcloud
Cisyam^5 小时前
Go环境搭建实战:告别Java环境配置的复杂
java·开发语言·golang
CHENFU_JAVA5 小时前
使用EasyExcel实现Excel单元格保护:自由锁定表头和数据行
java·excel
青云交6 小时前
Java 大视界 -- 基于 Java 的大数据实时流处理在智能电网分布式电源接入与电力系统稳定性维护中的应用(404)
java·大数据·分布式·智能电网·flink 实时流处理·kafka 数据采集·iec 61850 协议
仰望星空@脚踏实地7 小时前
maven scope 详解
java·maven·scope
M_Reus_117 小时前
Groovy集合常用简洁语法
java·开发语言·windows