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

RabbitMQ 的快速使用

docker部署rabbitmq

 # management才有管理页面
docker pull rabbitmq:management# 新建容器并运行
docker run \-e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin \ -v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \-itd \rabbitmq:management# 查看运行状态
docker ps -a

 


 

导入RabbitMQ依赖

pom.xml

<!--AMQP依赖,包含RabbitMQ-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

 

提供者和消费者的配置

application.yml

spring:rabbitmq:host: 192.168.137.139 # 主机名port: 5672 # 端口virtual-host: / # 虚拟主机username: admin # 用户名password: admin # 密码

 

注意执行顺序:需要先使用consumer监听并创建队列,publisher再往里面添加队列才会有用,否则白添加队列

 


 

SimpleQueue

在这里插入图片描述

提供者: SimpleQueuePublisher.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class SimpleQueuePublisher {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void simpleQueueTest() {String msg = "hello, simple queue";rabbitTemplate.convertAndSend("simple.queue", msg);}
}

消费者:SimpleQueueConsumer.java

@Component
public class SimpleQueueConsumer {@RabbitListener(queues = "simple.queue")public void simpleQueueConsumer(String msg) {System.out.println("simpleQueueConsumer: " + msg);}
}

 


 

Work Queues

在这里插入图片描述

可加配置

application.yml

spring:rabbitmq:listener:simple: # simple类型prefetch: 1 # consumer每次执行预取的数量

消费者:WorkQueueConsumer.java

@Component
public class WorkQueueConsumer {@RabbitListener(queuesToDeclare = {@Queue(name = "work.queue")})public void workQueue1Consumer(String msg) throws InterruptedException {System.out.println("workQueue1Consumer: " + msg);Thread.sleep(10);}@RabbitListener(queuesToDeclare = {@Queue(name = "work.queue")})public void workQueue2Consumer(String msg) throws InterruptedException {System.out.println("workQueue2Consumer: " + msg);Thread.sleep(90);}
}

提供者: WorkQueuePublisher.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class WorkQueuePublisher {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void workQueueTest() {for (int i = 1; i <= 100; i ++ ) {String msg = "hello, work queue. " + i;rabbitTemplate.convertAndSend("work.queue", msg);}}
}

 


 

发布/订阅

Direct

在这里插入图片描述

 


Routing

在这里插入图片描述

 


Topics

在这里插入图片描述

http://www.lryc.cn/news/147008.html

相关文章:

  • VUE3添加全局变量
  • JavaScript基础语法01——初识JavaScript
  • 家宽用户家庭网的主要质量问题是什么?原因有哪些
  • ZooKeeper的典型应用场景及实现
  • 智能安全帽~生命体征检测与危险气体检测一体化集成设计还是蓝牙无线外挂式方式好?
  • 【Java并发】聊聊对象内存布局和syn锁升级过程
  • 【档案专题】八、电子档案鉴定与销毁
  • 进程与子进程
  • 如何对MySQL和MariaDB中的查询和表进行优化-提升查询效率
  • 【Android】关于binder_calls_stats服务
  • 给前端返回http链接,由于浏览器缓存不能获取到最新资源怎么办?
  • 【Java Web】检查用户登录状态,防止用户访问到非法页面
  • 数学建模——校园供水系统智能管理
  • 分布式集群——搭建Hadoop环境以及相关的Hadoop介绍
  • Python的os.walk()函数使用案例
  • 学习JAVA打卡第四十五天
  • 创建K8s pod Webhook
  • 抓包-要抓取Spring Boot应用程序的请求
  • jmeter+nmon+crontab简单的执行接口定时压测
  • ZooKeeper基础命令和Java客户端操作
  • 【数据分享】2000-2020年全球人类足迹数据(无需转发\免费获取)
  • 基于机器学习的fNIRS信号质量控制方法
  • 分布式锁的三种实现方式是什么?
  • 华为云软件精英实战营——感受软件改变世界,享受Coding乐趣
  • 贪心算法总结篇
  • ICCV 2023 | 港中文MMLab: 多帧光流估计模型VideoFlow,首次实现亚像素级别误差
  • 【python爬虫】—图片爬取
  • 自动化运维工具—Ansible
  • uniapp 安卓平台签名证书(.keystore)生成
  • 缓存中间件Redis常考知识点