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

Spring Boot 集成 RabbitMQ:消息生产与消费详解

在现代微服务架构中,消息队列扮演着至关重要的角色,RabbitMQ 是其中一种广泛使用的消息中间件。本文将详细介绍如何在 Spring Boot 项目中集成 RabbitMQ,实现消息的生产和消费,并提供相应的代码示例。

一、环境准备与依赖配置

首先,确保你的开发环境中安装了 RabbitMQ 和 Java。接着,在 Spring Boot 项目的 pom.xml 文件中添加 RabbitMQ 依赖:

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

二、RabbitMQ 配置

application.ymlapplication.properties 文件中配置 RabbitMQ 的连接信息:

spring:rabbitmq:host: 127.0.0.1port: 5672username: guestpassword: guestvirtual-host: /

三、消息生产者

在 Spring Boot 中,可以使用 RabbitTemplate 来发送消息。以下是发送消息的示例代码:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class MessageProducer {@Autowiredprivate RabbitTemplate rabbitTemplate;public void sendMessage(String exchange, String routingKey, String message) {rabbitTemplate.convertAndSend(exchange, routingKey, message);}
}

四、消息消费者

在 Spring Boot 中,可以使用 @RabbitListener 注解来创建消息消费者。以下是消费者的基本使用姿势:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class MessageConsumer {@RabbitListener(queues = "yourQueueName")public void receiveMessage(String message) {System.out.println("Received message: " + message);}
}

五、交换机、队列和绑定关系配置

在 Spring Boot 中,可以通过 Java 配置类来定义交换机、队列和绑定关系:

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {@Beanpublic Queue myQueue() {return new Queue("myQueue", true);}@Beanpublic TopicExchange myExchange() {return new TopicExchange("myExchange");}@Beanpublic Binding binding() {return BindingBuilder.bind(myQueue()).to(myExchange()).with("routingKey");}
}

六、高级特性

消息确认机制

RabbitMQ 提供了自动和手动确认机制。以下是手动确认消息的示例:

@RabbitListener(queues = "yourQueueName")
public void receiveMessage(Message message, Channel channel) throws IOException {try {// 处理消息System.out.println("Received message: " + new String(message.getBody()));// 手动确认消息channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);} catch (Exception e) {// 处理失败,重新放回队列channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);}
}

连接池与并发控制

可以通过配置连接池与并发处理,提升性能:

spring.rabbitmq.listener.simple.concurrency=5
spring.rabbitmq.listener.simple.max-concurrency=10
spring.rabbitmq.listener.simple.prefetch=1

七、总结

通过本文,你学习了如何在 Spring Boot 项目中集成 RabbitMQ,创建生产者与消费者模型。RabbitMQ 的消息队列模式帮助我们实现了系统的解耦和异步任务处理。主要步骤包括安装 RabbitMQ 和 Erlang、Spring Boot 中的基础配置和依赖、创建队列、交换机和绑定关系、创建生产者和消费者,实现消息发送与接收,以及使用控制器测试消息发送。高级配置部分还介绍了手动确认、连接池等功能,帮助你在实际项目中更灵活地应用 RabbitMQ。希望这篇教程能帮助你快速上手 RabbitMQ 和 Spring Boot 的集成!

相关文章:

Spring Boot 集成 RabbitMQ:消息生产与消费详解

在现代微服务架构中&#xff0c;消息队列扮演着至关重要的角色&#xff0c;RabbitMQ 是其中一种广泛使用的消息中间件。本文将详细介绍如何在 Spring Boot 项目中集成 RabbitMQ&#xff0c;实现消息的生产和消费&#xff0c;并提供相应的代码示例。 一、环境准备与依赖配置 首…...

JSON-RPC-CXX深度解析:C++中的远程调用利器

一、引言 1. JSON-RPC 简介及其在 C 开发中的重要性 JSON-RPC&#xff08;JavaScript Object Notation - Remote Procedure Call&#xff09;是一种基于 JSON 格式的远程过程调用协议。在 C 开发中&#xff0c;它扮演着至关重要的角色。随着软件系统的日益复杂和分布式架构的…...

【后端速成Vue】模拟实现翻译功能

前言&#xff1a; 本期将会介绍 Vue 中的 watch 侦听器&#xff0c;它语法是怎么样的呢&#xff1f;具有怎样的功能呢&#xff1f;最后用模拟实现百度翻译来更进一步练习 watch 侦听器 篮球哥找工作专属IT岗位内部推荐&#xff1a; 专属内推链接&#xff1a;内推通道 1、认识翻…...

人脸识别技术:从算法到深度学习的全面解析

一、人脸识别技术综述 人脸识别技术作为一种重要的生物识别技术&#xff0c;在当今社会中具有举足轻重的地位。它广泛应用于各个领域&#xff0c;如金融领域的实名认证、安保领域的门禁系统、通行领域的火车站和地铁站检票、泛娱乐领域的美颜相机和短视频特效处理、公安和司法…...

WPF学习之路,控件的只读、是否可以、是否可见属性控制

C#的控件学习之控件属性操作 控件的只读、是否可以、是否可见&#xff0c;是三个重要的参数&#xff0c;在很多表单、列表中都有用到&#xff0c;正常表单控制可以在父层主键控制参数是否可以编辑和可见&#xff0c;但是遇到个别字段需要单独控制时&#xff0c;可以在初始化wi…...

植物神经紊乱不用怕,科学锻炼助你找回平衡✨

在这个快节奏、高压力的时代&#xff0c;你是否经常感到身心疲惫&#xff0c;情绪波动大&#xff0c;甚至偶尔还会出现心慌、失眠、消化不良等症状&#xff1f;这些可能都是植物神经功能紊乱在作祟&#xff01;&#x1f631;别担心&#xff0c;今天就来聊聊如何通过科学锻炼&am…...

shell 100例

1、每天写一个文件 (题目要求&#xff09; 请按照这样的日期格式(xxxx-xx-xx每日生成一个文件 例如生成的文件为2017-12-20.log&#xff0c;并且把磁盘的使用情况写到到这个文件中不用考虑cron&#xff0c;仅仅写脚本即可 [核心要点] date命令用法 df命令 知识补充&#xff1…...

CSS教程(二)- CSS选择器

1. 作用 匹配文档中的某些元素为其应用样式。根据不同需求把不同的标签选出来。 2. 分类 分类 基础选择器 包含 标签选择器、ID选择器、类选择器、通用选择器等 复合选择器 包含 后代选择器、子代选择器、伪类选择器等 1 标签选择器 介绍 又称为元素选择器&#xff0c;根…...

Ubuntu20.04 解决一段时间后键盘卡死 输入延迟很大的问题 ubuntu

Ubuntu20.04 解决一段时间后键盘卡死 输入延迟很大的问题 为了确保您能顺利通过双击快捷方式来重启 IBus&#xff0c;下面详细描述了从脚本创建到快捷方式设置的每一步&#xff0c;包括具体的命令行操作和必要的说明&#xff0c;以确保您能够按步骤成功执行。 步骤 1: 创建并…...

http(s)接口设计注意事项

http(s)在设计时应考虑&#xff1a; 一、签名认证 鉴权&#xff0c;如jwt方式等。 二、重要参数加密 如&#xff1a;用户的登录密码、银行卡号、转账金额、用户身份证等。 三、IP白名单 为了进一步加强API接口的安全性&#xff0c;防止接口的签名或者加密被破解了&#x…...

Font Awesome Web 应用图标

Font Awesome Web 应用图标 引言 在当今的数字时代,图标在Web应用中扮演着至关重要的角色。它们不仅增强了用户界面的视觉吸引力,而且还提高了用户体验和互动性。Font Awesome是一个广受欢迎的图标库,它为开发人员提供了一系列高质量的图标,可以轻松地集成到Web应用中。本…...

bridge-vlan

# 1.topo # 2.创建命名空间 ip netns add ns0 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns0-veth0 type veth peer name hn0-veth0 ip link add ns1-veth0 type veth peer name hn1-veth0 ip link add ns2-veth0 type veth pe…...

【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件

MySQL与Oracle一样都是通过逻辑存储结构来管理物理存储结构&#xff0c;即管理硬盘上存储的各种文件。下面将详细介绍InnoDB存储引擎中的数据文件和重做日志文件。 一、数据文件 “.ibd”文件和ibdata文件 这两种文件都是存放Innodb数据的文件&#xff0c;之所以有两种文件来…...

华为云前台展示公网访问需要购买EIP,EIP流量走向

华为云前台网络&#xff08;VPC,安全组&#xff0c;EIP&#xff09; 1.EIP网段是从哪里划分的&#xff1f; 管理员在后台Service_OM已设置 Service_OM-网络资源-外部网络-创建外部网络基本信息&#xff1a;配置参数&#xff1a;*名称 public*网络类型 LOCAL 不带标签 类似开…...

排序算法 -插入排序

文章目录 1.插入排序&#xff08;Insertion Sort&#xff09;1.1 简介1.2 插入排序的步骤1.3 插入排序的C实现1.4 插入排序的时间复杂度1.5 插入排序的空间复杂度1.6 插入排序的动画 2. 二分插入排序&#xff08;Binary Insertion Sort&#xff09;2.1 简介2.2 二分插入排序步骤…...

如何使用.bat实现电脑自动重启?

1、在电脑桌面新建一个记事本文档&#xff0c;将如下内容写进去&#xff1a; echo off shutdown /r /t 02、然后&#xff0c;保存一下&#xff0c;再把桌面此文件重命名为电脑重启.bat 3、双击此程序&#xff0c;可以立刻重启电脑。 PS&#xff1a;① 此程序会不保存任何当前…...

使用VSCode远程连接服务器并解决Neo4j无法登陆问题

摘要&#xff1a;本文介绍了如何通过VSCode连接内网部署的Neo4j服务器&#xff0c;并启动服务。在访问Neo4j登录界面时&#xff0c;遇到了端口映射问题导致无法登录。通过手动添加7687端口的映射后&#xff0c;成功登录Neo4j。 我在内网部署了一台服务器&#xff0c;并在其上运…...

使用React和Vite构建一个AirBnb Experiences克隆网站

这一篇文章中&#xff0c;我会教你如何做一个AirBnb Experiences的克隆网站。主要涵盖React中Props的使用。 克隆网站最终呈现的效果&#xff1a; 1. 使用vite构建基础框架 npm create vitelatestcd airbnb-project npm install npm run dev2. 构建网站的3个部分 网站从上…...

HBase压测 ycsb

## ycsb 导入数据 rootXX.14.40.1971、对portrait压测 ansible hadoop -i hosts_hbase_portrait_20230730.txt -m shell -a "hostname && chdir/data/workspace/ycsb-0.17.0 nohup bin/ycsb load hbase20 -P workloads/workload_insert -cp /usr/local/fqlhadoop/…...

基于Python+Django+Vue3+MySQL实现的前后端分类的商场车辆管理系统

项目名称&#xff1a;基于PythonDjangoVue3MySQL实现的前后端分离商场车辆管理系统 技术栈 开发工具&#xff1a;PyCharm、Visual Studio Code (VSCode)运行环境&#xff1a;Python 3.10、MySQL 8.0、Node.js 18技术框架&#xff1a;Django 5、Vue 3.4、Ant-Design-Vue 4.12 …...

pg_dump备份报错:Only syssso can access this table

文章目录环境症状问题原因解决方案环境 系统平台&#xff1a;N/A 版本&#xff1a;4.5.8 症状 使用pg_dump对数据库进行备份时报错&#xff1a; pg_dump:error:query failed:ERROR: Only syssso can access this table. pg_dump:error:query was: SELECT label, provider, …...

3大实战场景解析:如何用FakeLocation实现Android应用级GPS伪装

3大实战场景解析&#xff1a;如何用FakeLocation实现Android应用级GPS伪装 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation FakeLocation是一款基于Xposed框架的Android位置模拟工…...

Verilog任务与函数实战:从APB总线测试到模块化设计避坑指南

Verilog任务与函数实战&#xff1a;从APB总线测试到模块化设计避坑指南 在FPGA和ASIC开发中&#xff0c;Verilog的任务&#xff08;task&#xff09;和函数&#xff08;function&#xff09;是提高代码复用性和可维护性的关键工具。本文将深入探讨这两者在实际工程中的应用差异…...

3步掌握Vortex:让250+游戏模组管理像专业开发者一样简单

3步掌握Vortex&#xff1a;让250游戏模组管理像专业开发者一样简单 【免费下载链接】Vortex Vortex: Nexus-Mods开发的游戏模组管理器&#xff0c;用于简化模组的安装和管理过程。 项目地址: https://gitcode.com/gh_mirrors/vor/Vortex 价值定位&#xff1a;重新定义游…...

Pinyin-pro 3.15.1版本避坑指南:老项目兼容性问题解决方案

Pinyin-pro 3.15.1版本避坑指南&#xff1a;老项目兼容性问题解决方案 在技术迭代飞快的今天&#xff0c;前端开发者常常面临一个尴尬局面&#xff1a;新发布的工具库在功能上令人惊艳&#xff0c;却因为底层依赖或语法特性与老项目环境不兼容而无法直接使用。Pinyin-pro作为中…...

终极指南:如何为Muzei Live Wallpaper配置GitHub Actions自动化构建与测试

终极指南&#xff1a;如何为Muzei Live Wallpaper配置GitHub Actions自动化构建与测试 【免费下载链接】muzei Muzei Live Wallpaper for Android 项目地址: https://gitcode.com/gh_mirrors/mu/muzei Muzei Live Wallpaper是一款备受欢迎的Android动态壁纸应用&#xf…...

从LC谐振到信号振铃:用Multisim仿真带你理解PCB上的阻尼振荡

从LC谐振到信号振铃&#xff1a;用Multisim仿真揭示PCB阻尼振荡的本质 1. 振铃现象&#xff1a;硬件工程师的"噩梦" 第一次在示波器上看到信号边沿那些诡异的振荡波形时&#xff0c;我差点以为自己的电路板被某种神秘力量干扰了。这种被称为"振铃"的现象…...

从手动压枪到智能辅助:探索罗技鼠标宏在PUBG中的进化之路

从手动压枪到智能辅助&#xff1a;探索罗技鼠标宏在PUBG中的进化之路 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 当你在绝地求生的激烈对枪中…...

OSI七层模型的意义:网络世界的工程思维密码

理解七层网络模型&#xff08;OSI模型&#xff09;的意义&#xff0c;不在于死记硬背哪一层叫什么名字&#xff0c;而在于它能帮你建立一套拆解复杂系统的思维框架。具体来说&#xff0c;学习它主要有以下几层价值&#xff1a;1. 建立“分而治之”的工程思维网络通信是一个极其…...

可视掏耳勺哪个牌子好?用什么掏耳朵最好?掏耳勺神器新款第一名

用什么掏耳朵最好&#xff1f;如今耳道护理成为家庭日常刚需&#xff0c;可视掏耳勺凭借“边看边清洁”的核心优势&#xff0c;彻底解决了传统盲掏易戳伤耳道、推深耳垢的痛点&#xff0c;成为越来越多人的首选。但当前可视掏耳勺市场陷入参数内卷&#xff0c;不少品牌盲目追求…...