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

RabbitMQ学习(自用)

同步调用的流程图
在这里插入图片
异步调用的流程
在这里插入图片描述
异步调用的流程图,有有mq,就可以讲一些操作放在消息队列中,让他们异步去执行操作。
在这里插入图片描述
首先下载docker镜像

docker pull rabbitmq:3.12-management

创建并运行 RabbitMQ 容器
在powershell中输入

docker run -d `--name rabbitmq `-p 5672:5672 `-p 15672:15672 `-e RABBITMQ_DEFAULT_USER=admin `-e RABBITMQ_DEFAULT_PASS=password `rabbitmq:3.12-management

5672 端口:是 RabbitMQ 的核心通信端口,你的 Java 应用程序(如之前的MessageSender和MessageReceiver)会通过此端口连接到 RabbitMQ 服务器。
15672 端口:是 RabbitMQ 内置的 Web 管理界面端口,用于可视化监控和配置 RabbitMQ(访问地址:http://localhost:15672,用户名admin,密码password)。

使用java实现RabbitMQ
首先导入依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>

消息队列发送方

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class MessageSender {private final static String QUEUE_NAME = "hello";public static void main(String[] argv) throws Exception {// 创建连接工厂并设置RabbitMQ服务器地址ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");factory.setUsername("admin");factory.setPassword("password");// 建立连接和通道try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {// 声明队列(如果不存在)channel.queueDeclare(QUEUE_NAME, false, false, false, null);// 准备消息内容String message = "Hello, RabbitMQ!";// 发布消息到队列channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));System.out.println(" [x] Sent '" + message + "'");}}
}

消息队列接收方


```java
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;public class MessageReceiver {private final static String QUEUE_NAME = "hello";public static void main(String[] argv) throws Exception {// 创建连接工厂并设置RabbitMQ服务器地址ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");factory.setUsername("admin");factory.setPassword("password");// 建立连接和通道Connection connection = factory.newConnection();Channel channel = connection.createChannel();// 声明队列(如果不存在)channel.queueDeclare(QUEUE_NAME, false, false, false, null);System.out.println(" [*] Waiting for messages. To exit press CTRL+C");// 定义消息处理回调DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [x] Received '" + message + "'");};// 启动消费者并等待消息channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });}
}

整体框架
在这里插入图片描述
RabbitMQ使用虚拟主机实现隔离作用
在这里插入图片描述

http://www.xdnf.cn/news/6030.html

相关文章:

  • (顺序表、单链表、双链表)==>一篇解决!(Java版)
  • 【即插即用涨点模块】【上采样】CARAFE内容感知特征重组:语义信息与高效计算两不误【附源码】
  • MyBatis与MyBatis-Plus深度分析
  • SimpleAdmin云服务器发布
  • Qt —— 在Windows10下通过在线安装方式安装Qt6.9.0(附:“server replied: Forbidden“网络出错解决办法)
  • Pytorch张量和损失函数
  • 电子科技浪潮下的华秋电子:慕尼黑上海电子展精彩回顾
  • 反转链表II
  • mysql常用方法
  • 关于Go语言的开发环境的搭建
  • 组合问题(多条件)
  • Linux 系统安全基线检查:入侵防范测试标准与漏洞修复方法
  • C语言| 静态局部变量
  • 3级-运算符
  • 从数据中台到数据飞轮:实现数据驱动的升级之路
  • 论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity
  • SparkSQL入门指南:从基础到实践的全面解析
  • 配置Nginx启用Https
  • 豌豆 760 收录泛滥现象深度解析与应对策略
  • FedTracker:为联邦学习模型提供所有权验证和可追溯性
  • Unity3D 序列化机制:引擎内的应用场景和基本原理
  • vue3项目创建-配置-elementPlus导入-路由自动导入
  • 江苏发改委回复:分时电价调整对储能项目的影响 源网荷储一体化能量管理系统储能EMS
  • 为什么企业建站或独立站选用WordPress
  • C程序的存储空间分配
  • 汉得 x 真味生物|H-ZERO PaaS项目启动,共启数字化新征程!
  • 可视化+智能补全:用Database Tool重塑数据库工作流
  • java 结合 FreeMarker 和 Docx4j 来生成包含图片的 docx 文件
  • 七、深入 Hive DDL:管理表、分区与洞察元数据
  • 邀请函|PostgreSQL培训认证报名正式开启