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

RabbitMQ基础篇之Java客户端快速入门

文章目录

      • 需求
      • 项目设置与依赖管理
      • 配置RabbitMQ的连接信息
      • 创建队列与消息发送
      • 创建消费者(消息接收)
      • 环境准备与操作

需求

  • 利用控制台创建队列 simple.queue
  • 在 publisher 服务中,利用 SpringAMQP 直接向 simple.queue 发送消息
  • 在 consumer 服务中,利用 SpringAMQP 编写消费者,监听 simple.queue 队列

在这里插入图片描述



项目设置与依赖管理

  • 在实际项目中,通常我们会使用 spring-boot-starter-amqp 来引入Spring AMQP的功能。
  • 项目中的依赖配置已经包含了RabbitMQ的相关依赖,所以不需要单独添加。
<!--AMQP依赖,包含RabbitMQ-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>



配置RabbitMQ的连接信息

  • 配置RabbitMQ连接的地址、端口和虚拟主机信息,这些信息在 每个微服务的 application.yml 文件中进行设置。
  • 需要设置如下参数:
    • spring.rabbitmq.host:RabbitMQ服务器的IP地址或域名。
    • spring.rabbitmq.port:连接RabbitMQ的端口(通常为5672)。
    • spring.rabbitmq.virtual-host:RabbitMQ的虚拟主机。
    • spring.rabbitmq.usernamespring.rabbitmq.password:连接RabbitMQ的用户名和密码。
spring:rabbitmq:host: 192.168.100.212 # 主机名port: 5672  # 端口virtual-host: / # 虚拟主机username: nhuan # 用户名password: 123456 # 密码



创建队列与消息发送

  • 创建队列:在RabbitMQ控制台中创建一个简单的队列(如 simple.q)。
  • 发送消息
    • 使用Spring AMQP提供的 RabbitTemplate 发送消息。调用 convertAndSend 方法,其中需要指定队列名和消息内容。
    • 例子代码:
@Autowired
private RabbitTemplate rabbitTemplate;@Test
public void testSimpleQueue() {// 队列名称String queueName = "simple.queue";// 消息String message = "Hello, Spring AMQP!";// 发送消息rabbitTemplate.convertAndSend("simple.queue", message);
}



创建消费者(消息接收)

  • 消费者用于监听队列并接收消息。
  • 创建一个类,并使用 @RabbitListener 注解标注接收方法,指定监听的队列名称。
  • 例子代码:
@Slf4j
@Component
public class SpringRabbitListener {@RabbitListener(queues = "simple.queue")public void listenSimpleQueueMessage(String message) throws InterruptedException {log.info("spring 消费者接收到的消息: " + message);}
}

  • 通过 @RabbitListener 注解,Spring会自动处理消息的接收和转换。
  • 运行ConsumerApplication,成功监测到消息





环境准备与操作

  • 在开发过程中,确保RabbitMQ服务已经启动并运行。
  • 消费者和生产者分别部署到不同的微服务中,通过队列进行消息交换。

相关文章:

RabbitMQ基础篇之Java客户端快速入门

文章目录 需求 项目设置与依赖管理 配置RabbitMQ的连接信息创建队列与消息发送创建消费者&#xff08;消息接收&#xff09;环境准备与操作 需求 利用控制台创建队列 simple.queue在 publisher 服务中&#xff0c;利用 SpringAMQP 直接向 simple.queue 发送消息在 consumer 服…...

深度学习:基于MindSpore NLP的数据并行训练

什么是数据并行&#xff1f; 数据并行&#xff08;Data Parallelism, DP&#xff09;的核心思想是将大规模的数据集分割成若干个较小的数据子集&#xff0c;并将这些子集分配到不同的 NPU 计算节点上&#xff0c;每个节点运行相同的模型副本&#xff0c;但处理不同的数据子集。…...

Qt6之QML——枚举

在 QML 中&#xff0c;枚举 (Enumeration) 是一种用于定义一组固定值的功能。通过枚举&#xff0c;可以便捷地提供一组可选值&#xff0c;使用更加明确和精简。 一、枚举的特点 固定值定义&#xff1a; 枚举可以预先定义一组字面值&#xff0c;通常用于需要定义限制值范围的场景…...

ModiLeo交易平台:引领数字货币交易新未来

在当今数字化高速发展的时代&#xff0c;数字货币作为一种新兴的金融资产形式&#xff0c;正逐渐改变着全球金融格局。而此刻&#xff0c;由印度 ModiLeo 实验室联合全球顶级投行共同打造的全球领先的一站式数字货币交易平台——ModiLeo 即将上线&#xff0c;这无疑是数字货币领…...

[python SQLAlchemy数据库操作入门]-15.联合查询,跨表获取股票数据

哈喽,大家好,我是木头左! 在开始探讨如何利用SQLAlchemy实现复杂的联合查询之前,首先需要深入理解其核心组件——对象关系映射(ORM)。ORM允许开发者使用Python类来表示数据库中的表,从而以一种更直观、面向对象的方式来操作数据库。 SQLAlchemy中的JOIN操作详解 在SQLA…...

某网站手势验证码识别深入浅出(全流程)

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 本文识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/other/20 本篇文章包含经验和教训总结,我采用了两种方法进行识别,两种方法都各有优劣,其中一…...

在虚幻引擎4(UE4)中使用蓝图的详细教程

在虚幻引擎4&#xff08;UE4&#xff09;中使用蓝图的详细教程 虚幻引擎4&#xff08;Unreal Engine 4&#xff0c;简称UE4&#xff09;是一款功能强大的游戏引擎&#xff0c;广泛应用于游戏开发、虚拟现实、建筑可视化等领域。UE4 提供了一个强大的可视化脚本工具——蓝图&am…...

Junit如何禁用指定测试类,及使用场景

在JUnit中禁用指定测试类可以通过多种方式实现&#xff0c;具体取决于使用的JUnit版本&#xff08;JUnit 4 或 JUnit 5&#xff09;。以下是针对两个版本的详细说明以及它们可能的使用场景&#xff1a; JUnit 4 禁用整个测试类 可以使用Ignore注解来忽略整个测试类。这将导致…...

ICLR2015 | FGSM | 解释并利用对抗样本

Explaining and Harnessing Adversarial Examples 摘要-Abstract相关工作-Related Work对抗样本的线性解释-The Linear Explanation of Adversarial Examples非线性模型的线性扰动-Linear Pertubation of Non-Linear Models线性模型与权重衰减的对抗训练-Adversarial Training …...

Python 迭代器与生成器

Python 中的迭代器和生成器是处理集合元素的重要工具&#xff0c;它们在处理大量数据时特别有用&#xff0c;因为它们不需要一次性将所有数据加载到内存中。 迭代器&#xff08;Iterator&#xff09; 迭代器是一个实现了迭代器协议的对象&#xff0c;这意味着它有两个方法&am…...

MySQL数据库——索引结构之B+树

本文先介绍数据结构中树的演化过程&#xff0c;之后介绍为什么MySQL数据库选择了B树作为索引结构。 文章目录 树的演化为什么其他树结构不行&#xff1f;为什么不使用二叉查找树&#xff08;BST&#xff09;&#xff1f;为什么不使用平衡二叉树&#xff08;AVL树&#xff09;&a…...

3_TCP/IP连接三次握手与断开四次挥手

TCP/IP 通信是网络通信的基础协议&#xff0c;分为以下主要步骤&#xff1a; 1、建立连接&#xff08;三次握手&#xff09; 目的&#xff1a;保证双方建立可靠的通信连接。 过程&#xff1a; 1>客户端发送 SYN&#xff1a;客户端向服务器发送一个 SYN&#xff08;同步&…...

【LC】3159. 查询数组中元素的出现位置

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;一个整数数组 queries 和一个整数 x 。 对于每个查询 queries[i] &#xff0c;你需要找到 nums 中第 queries[i] 个 x 的位置&#xff0c;并返回它的下标。如果数组中 x 的出现次数少于 queries[i] &#xff0c;该查…...

《机器学习》——KNN算法

文章目录 KNN算法简介KNN算法——sklearnsklearn是什么&#xff1f;sklearn 安装sklearn 用法 KNN算法 ——距离公式KNN算法——实例分类问题完整代码——分类问题 回归问题完整代码 ——回归问题 KNN算法简介 一、KNN介绍 全称是k-nearest neighbors&#xff0c;通过寻找k个距…...

GAMES101:现代计算机图形学入门-作业五

作业五 这次作业给了许多脚本&#xff0c;我们现在可以把每个脚本的代码逐行细细分析一下。 main.cpp #include "Scene.hpp" #include "Sphere.hpp" #include "Triangle.hpp" #include "Light.hpp" #include "Renderer.hpp&quo…...

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探&#xff1a;鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…...

Spring AOP:this 调用当前类方法无法被拦截

问题复现 假设我们正在开发一个宿舍管理系统&#xff0c;这个模块包含一个负责电费充值的类 ElectricService&#xff0c;它含有一个充电方法 charge()&#xff1a; Service public class ElectricService {public void charge() throws Exception {System.out.println("E…...

K8S-LLM:用自然语言轻松操作 Kubernetes

在 Kubernetes (K8s) 的日常管理中&#xff0c;复杂的命令行操作常常让开发者感到头疼。无论是部署应用、管理资源还是调试问题&#xff0c;都需要记住大量的命令和参数。Kubernetes 作为容器编排的行业标准&#xff0c;其强大的功能伴随着陡峭的学习曲线和复杂的命令行操作。这…...

lua和C API库一些记录

相关头文件解释 lua.h&#xff1a;声明lua提供的基础函数&#xff0c;所有内容都有个前缀lua_&#xff1b; luaxlib.h&#xff1a;声明辅助库提供的函数&#xff0c;所有内容都有个前缀luaL_&#xff1b; lualib.h&#xff1a;声明了打开标准库的函数&#xff1b; 辅助库对…...

SpringSecurity中的过滤器链与自定义过滤器

关于 Spring Security 框架中的过滤器的使用方法,系列文章: 《SpringSecurity中的过滤器链与自定义过滤器》 《SpringSecurity使用过滤器实现图形验证码》 1、Spring Security 中的过滤器链 Spring Security 中的过滤器链(Filter Chain)是一个核心的概念,它定义了一系列过…...

SDD基于规范编程-OpenSpec及SuperPowers沙

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式&#xff0c;即所谓的“工程导向型”开发&#xff0c;要求开发者创建一个复杂的项目结构&#xff0c;包括项目文件&#xff08;.csproj&#xff09;、解决方案文件&#xff08;.sln&#xff09;、属性设置以及依赖…...

隐私优先的AI助手:OpenClaw+Qwen3-4B离线处理敏感财务文档

隐私优先的AI助手&#xff1a;OpenClawQwen3-4B离线处理敏感财务文档 1. 为什么需要离线AI财务助手 去年整理家庭年度支出时&#xff0c;我遇到了一个尴尬问题&#xff1a;想把银行流水导出到Excel做分类统计&#xff0c;但账单PDF包含太多敏感信息&#xff08;账户号、交易对…...

3种方法如何解决Balena Etcher在Arch Linux上的安装难题

3种方法如何解决Balena Etcher在Arch Linux上的安装难题 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 问题诊断&#xff1a;为什么Arch Linux安装Etcher总是失…...

前后端分离项目(Vue + Java)云服务器部署

前后端分离项目&#xff08;Vue Java&#xff09;云服务器部署完整版文档 文档说明 本文档适用于&#xff1a; 前端&#xff1a;Vue2 / Vue3 项目后端&#xff1a;SpringBoot 项目服务器&#xff1a;Linux 云服务器&#xff08;CentOS7 / CentOS8 / Ubuntu&#xff09;部署方式…...

Qwen3.5-9B实战教程:WebSocket流式响应+前端实时渲染优化方案

Qwen3.5-9B实战教程&#xff1a;WebSocket流式响应前端实时渲染优化方案 1. 项目概述与核心能力 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;在多个领域展现出强大的能力&#xff1a; 强逻辑推理&#xff1a;能够处理复杂的逻辑问题&#xff0c;适合需要深度…...

紧急预警:Mojo v1.1.3+ 版本Python插件存在ABI不兼容漏洞!立即执行这3条命令规避崩溃风险

第一章&#xff1a;紧急预警&#xff1a;Mojo v1.1.3 版本Python插件存在ABI不兼容漏洞&#xff01;立即执行这3条命令规避崩溃风险近期安全审计发现&#xff0c;Mojo 编译器 v1.1.3 及后续版本&#xff08;含 v1.1.4、v1.1.5&#xff09;中内置的 Python 插件&#xff08;mojo…...

Abaqus GUI界面中文乱码终极解决方案(含插件兼容指南)

1. Abaqus中文乱码问题全解析 第一次打开Abaqus发现菜单栏全是"口口口"的时候&#xff0c;我差点以为软件装坏了。这种中文乱码问题在工程仿真领域特别常见&#xff0c;尤其是使用中文操作系统的用户。经过多次实践&#xff0c;我发现根本原因是Abaqus默认的locale设…...

nuScenes 全景分割:Panoptic nuScenes 完整实现指南

nuScenes 全景分割&#xff1a;Panoptic nuScenes 完整实现指南 【免费下载链接】nuscenes-devkit The devkit of the nuScenes dataset. 项目地址: https://gitcode.com/gh_mirrors/nu/nuscenes-devkit Panoptic nuScenes 是 nuScenes 数据集的重要扩展&#xff0c;提供…...

别再只用针孔模型了!手把手教你用OpenCV的fisheye模块搞定鱼眼相机标定与去畸变

鱼眼相机标定实战&#xff1a;从OpenCV fisheye模块到工业级去畸变方案 鱼眼镜头在自动驾驶环视系统、VR全景拍摄和工业检测中越来越常见&#xff0c;但高达180度的视野带来的桶形畸变让许多开发者头疼。传统针孔模型标定方法在鱼眼镜头上完全失效——棋盘格边缘的直线会变成夸…...

让Windows任务栏呼吸起来:透明美学与智能动态的完美结合

让Windows任务栏呼吸起来&#xff1a;透明美学与智能动态的完美结合 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否曾盯着Windows…...