SpringBoot整合RabbitMQ

springboot整合rabbitMQ 登录rabbitMQ后台。拉取rabbitMQ镜像。查看容器是否启动成功。运行rabbitMQ。安装docker参考。查看镜像是否拉取成功。第二步:生产者(publisher)创建test。新建一个父项目和两个子项目。一个为生产者、一个为消费者。我这里使用的是vm虚拟机做演示。application.yml 配置。消费者(consumer)接收代码。 阅读详情

配置依赖

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

 

配置参数

spring.rabbitmq.host= 127.0.0.1
spring.rabbitmq.password = guest
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest

 

消息队列

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName: Queues
 * @Description: Queues
 * @Author: xuezhouyi
 * @Version: V1.0
 **/
@Configuration
public class Queues {

    /**
     * 下单减库存
     */
    public static final String CP_ORDER_OPS = "cp:order:ops";

    /**
     * 发放权益
     */
    public static final String CP_RIGHTS_OPS = "cp:rights:ops";

    @Bean
    public Queue orderOps() {
        return new Queue(CP_ORDER_OPS);
    }

    @Bean
    public Queue rightsOps() {
        return new Queue(CP_RIGHTS_OPS);
    }
}

 

生产者

import com.icitic.mc.seckill.service.config.Queues;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @ClassName: Producer
 * @Description: Producer
 * @Author: xuezhouyi
 * @Version: V1.0
 **/
@Component
public class Producer {
    @Autowired
    private AmqpTemplate template;

    public void orderMQ() {
        template.convertAndSend(Queues.CP_ORDER_OPS, "下单");
        System.out.println(">>>下单消息发送成功!");
    }

    public void rightsMQ() {
        template.convertAndSend(Queues.CP_RIGHTS_OPS, "权益");
        System.out.println(">>>权益消息发送成功!");
    }
}

 

消费者

import com.icitic.mc.seckill.service.config.Queues;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * @ClassName: Consumer
 * @Description: Consumer
 * @Author: xuezhouyi
 * @Version: V1.0
 **/
@Component
public class Consumer {
    @RabbitListener(queues = Queues.CP_ORDER_OPS)
    public void consumerOrder(String str) throws InterruptedException {
        Thread.sleep(1000);
        System.out.println(">>>下单收到消息:" + str);
    }

    @RabbitListener(queues = Queues.CP_RIGHTS_OPS)
    public void consumerRights(String str) {
        System.out.println(">>>权益收到消息:" + str);
    }
}

 

测试

import com.icitic.mc.seckill.service.mq.Producer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * @ClassName: SecKillServiceApplicationTests
 * @Description: SecKillServiceApplicationTests
 * @Author: xuezhouyi
 * @Version: V1.0
 **/
@SpringBootTest
@RunWith(SpringRunner.class)
public class SecKillServiceApplicationTests {
    @Autowired
    public Producer producer;

    @Test
    public void test() throws InterruptedException {
        producer.orderMQ();
        Thread.sleep(1000);
        producer.rightsMQ();
    }
}

 

结果

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.9.RELEASE)

20:20:16.345   [main] INFO  {org.springframework.boot.StartupInfoLogger: logStarted} com.icitic.mc.seckill.service.service.SecKillServiceApplicationTests : Started SecKillServiceApplicationTests in 19.715 seconds (JVM running for 21.842)
>>>下单消息发送成功!
>>>权益消息发送成功!

20:20:16.903   [Thread-8] INFO  {org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer: doShutdown} org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer : Waiting for workers to finish.
>>>权益收到消息:权益
20:20:16.961   [Thread-8] INFO  {org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer: doShutdown} org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer : Successfully waited for workers to finish.
20:20:17.005   [Thread-8] INFO  {org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer: doShutdown} org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer : Waiting for workers to finish.
>>>下单收到消息:下单
20:20:17.965   [Thread-8] INFO  {org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer: doShutdown} org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer : Successfully waited for workers to finish.

SpringBoot 整合 RabbitMQ 相关知识 交换器 direct:一对一 fanout:一对多 topic:一对多匹配 目标 整合 Spring boot 提供的 spring-boot-starter-amqp,实现消息发送、消息消费、确认 准备工作 安装RabbitMQ 介绍使用 Docker 方式安装,Docker 安装可以参考 https://blog.csdn.net/gongm24/article/details/... 阅读详情

相关推荐

Springboot整合rabbitMq

1.开发环境 Centos 7 , docker环境,jdk 7 , maven 3.55 (配置阿里的镜像),springboot 版本1.5.9 ,ide eclipse 安装sts 插件。

MQ报错Waiting for workers to finish.Stopping container from aborted consumer.Successfully waited for w...

2020-04-27 11:34:37.312 [SimpleAsyncTaskExecutor-37] ERROR org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer - Consumer received fatal exception during processingorg.springf...

zuixiaoyao_001的博客 3760

springboot整合rabbitmq Demo

springboot 整 合 rabbitmq 的 一 个 小 例 子,生产者 消费者 交换机 队列

rabbitmq的消息持久化处理开启,再关闭后,消费者启动报错

今天在测试rabbitmq的消息持久化处理时,一切顺利,可是再想测试ACK消息确认机制时,消费者却无法启动了,报如下错误: org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException: Mismatched queues at org.springframework.amqp.rabbit....

不试一下你怎么知道自己有多强?最不像程序员的程序员的专栏 1万+

OpenClaw Browser Relay Extension 鉴权失败与 invalid handshake 问题的终极解决方案

在使用 OpenClaw 浏览器插件 (Browser Relay Extension) 时,许多用户可能会遇到两个主要问题:一是配置端口错误导致的连接失败,二是鉴权失败 (Gateway token rejected)。本文将详细解析这两个问题并提供解决方案。

gerryke的blog 5559

S32K3基于EB配置GPT触发WDG的实战解析

本文详细解析了S32K3 MCU基于EB tresos工具配置GPT定时器触发看门狗(WDG)的实战方法。通过分析协同工作机制、MCAL配置步骤及代码实现,帮助开发者构建可靠的硬件监控系统,提升汽车电子系统的安全性与实时性。

f9g0h的博客 204

(18)不重启服务动态停止、启动RabbitMQ消费者

我们在消费RabbitMQ消息的过程中,有时候可能会想先暂停消费一段时间,然后过段时间再启动消费者,这个需求怎么实现呢?我们可以借助RabbitListenerEndpointRegistry这个类来实现,它的全类名是org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry,通过这个类可以实现全部队列消息的启动、停止消费,也可以实现指定队列消息的启动、停止消费。

没头脑遇到不高兴 3118

C#上位机与VisionPro通用框架:视觉标定、通信联动与现场排坑实战

工业自动化设备的上位机开发,往往面临流程控制、视觉检测、通信交互等环节的重复搭建。C#作为主流工业语言,配合VisionPro视觉软件,可通过通用框架设计将状态机调度、相机采集、标定算法与串口/扫码枪通信等底层能力模块化,从而大幅降低项目交付成本。其核心原理在于:将设备工艺差异封装至配置层,视觉流程通过CogToolBlock工具链与VPP模板复用,九点标定建立像素与机械坐标系的映射关系。该方案已在螺丝锁付、点胶定位等多类产线落地,尤其适用于批量交付、换型频繁的视觉设备场景。这套从实践中沉淀的框架思路,以及

weixin_31102231的博客 337

Java多线程实战-CountDownLatch模拟压测实现

当多个线程需要协调和同步执行任务时,Java 中的 CountDownLatch(倒计时器)是一个常用的工具类。它可以帮助开发者实现线程之间的同步,确保某些线程在其他线程完成任务后再继续执行。牵着猫散步的鼠鼠。本文将介绍 CountDownLatch 的基本原理、用法以及示例代码,最后会使用CountDownLatch完成一个简单的压测实现。

qq_35716689的博客 25万+

量化交易新手必看:如何用vnpy+Tushare轻松获取A股历史数据(附完整代码)

本文为量化交易新手提供了使用vnpy和Tushare构建A股历史数据获取系统的完整指南。通过详细的代码示例,手把手教你搭建环境、封装数据获取引擎,并实现日线等数据的格式转换与本地存储,为策略回测与分析奠定坚实的数据基础。

weixin_29098117的博客 378

小白快速上手 labelimg:新手图像标注详解教程

本教程主要帮助没有使用过labelimg的小白上手该软件,快速学会基本操作和打标签,为数据集准备打下基础。

小白一枚~ 2万+

ZkClient already closed

     最近项目在ice的新环境中部署总是报ZkClient already closed!错误,但是项目通过java -jar的方式是可以启动的,zookeeper是连通的,排除了zookeeper的问题之后,在想是什么问题,根据启动的日志是zookeeper的服务不能注册,这是表象的原因。经过详细的排查,后来在grid.err中发现是有一个文件没有写的权限导致了ice启动起来之后又关闭了,i...

quliuwuyiz的博客 4984

深入解析DDR5 SDRAM的ODT模式:时序图与状态表实战指南

本文深入解析了DDR5 SDRAM的ODT模式,详细阐述了其五种工作状态及其在读写操作中的动态切换逻辑。通过解读JESD79-5标准中的时序图与状态表,并结合模式寄存器配置实战,为硬件工程师和爱好者提供了优化信号完整性、提升系统稳定性的关键指南。

gpu4optimizer的博客 699

SpringBoot如何整合RabbitMQ

好久没有写博客了,终日忙于生计,真是人过30不如狗啊,但写点什么好呢?想想当年自己入门时候那痛苦的经历,还是写点优质实用的入门文章吧,既满足了自己好为人师的本性,也能给后辈提供一些帮助。今天咱们就来聊聊springboot整合rabbitmq的那些事吧。SpringBoot的风头之盛不多说了,我是在2016年首次接触springboot的,当时自己要写个APP,后台采用了springboot。当时还真是个新鲜事物,没想到以后几年的发展犹如黄河泛滥,一发不可收拾…rabbitmq官网https。...

ShuSheng007的程序人生 1万+

OpenClaw实战系列06:持久记忆与RAG知识库构建——让AI真正“记住”你

本文介绍了OpenClaw AI助理的持久记忆与RAG知识库构建功能。OpenClaw采用"文件即真理"的独特设计,所有记忆都以Markdown文件形式存储,支持直接编辑和Git版本管理。记忆系统分为三层:长期精炼记忆(MEMORY.md)、日常日志(按日期存储)和归档记忆。文章详细说明了环境配置步骤,包括安装必要组件、创建目录结构、设置API密钥,并提供了OpenClaw主配置文件的完整参数说明。该系统实现了跨会话、跨平台的持久化记忆,使AI助理能真正理解用户需求。

PeterPan的博客 1171

别再用LabelImg了!我手搓了一个C#“一站式”YOLO工具箱,标注训练推理全搞定

这个工具箱目前已经在两个小型产线项目中试用,反馈非常好。效率提升:原本需要 2 天完成的“数据准备 - 训练 - 验证”循环,现在缩短到了 2 小时。门槛降低:产线技术员经过 10 分钟培训,就能独立完成新产品的模型迭代。当然,它还有改进空间未来计划集成主动学习功能:自动筛选出置信度低的图片,推荐优先标注。支持多模型管理:方便在不同产品型号间快速切换。增加PLC 通信模块:直接在推理界面配置 IO 信号,实现真正的软硬联动。最后想说工具的本质是服务于人。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 442

SpringBoot整合RabbitMQ案例

SpringBoot整合RabbitMQ 一 .安装RabbitMQ(Windows环境) 第一步:首先下载Erlang环境,因为RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。 下载地址:https://www.erlang.org/patches/otp-24.1.6 下载安装完后需要配置系统环境变量 此电脑–>鼠标右键“属性”–>高级系统设置–>环境变量–>“新建”系统环境变量 变量名:ERLANG_HOME 变

cheney6666的博客 1526

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

快速上手RabbitMQ及springboot快速整合RabbitMQ

Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列如果多个队列具有相同的RoutingKey,则与Fanout功能类似。

2201_75442471的博客 1297

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MQ Springboot整合RabbitMQ

1 资源 资源信息 版本号 备注 rabbitMQ 3.6.5 IP: 192.168.51.4 springboot 2.1.5.RELEASE springboot-rabbitmq-demo 源码 下载 2 rabbitmq安装 需要安装rabbitmq,如果未安装,可参考博文: MQ RabbitMQ 单机版部署和配置 3 springboot整合 3.1 pom文件 <?xml version="1.0" encoding="UTF-8"?> <proj

小P聊技术 409

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RabbitMQ 整合 SpringBoot

大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力、流量削峰消息服务中两个重要概念:消息代理(`message broker`)和目的地(`destination`)当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。消息队列主要有两种形式的目的地1. 队列(`queue`):点对点消息通信(`point-to-point`)2. 主题(`topic`):发布(`publish`)/订阅(`subscribe`)消息通信。

m0_46995061的博客 934

SpringBoot 整合RabbitMQ

springboot整合RabbitMQ笔记

小凯的博客 2657

【应用】SpringBoot 整合 RabbitMQ

整理总结了 SpringBoot 整合 RabbitMQ 的基本使用方法

情绪瓜皮皮丶的学习之路 910

实战:SpringBoot与RabbitMQ整合

1.背景介绍 1. 背景介绍 随着微服务架构的普及,分布式系统的复杂性也逐渐增加。在这种架构中,消息队列成为了一种常见的解决方案,用于解耦服务之间的通信。RabbitMQ是一种流行的消息队列系统,它支持多种消息传输协议,如AMQP、MQTT、STOMP等。SpringBoot是一种简化Spring应用开发的框架,它提供了许多预配置的启动器,使得开发者可以快速搭建Spring应用。 在本文中,...

AI天才研究院 1418

03_Springboot整合RabbitMQ

x-single-active-consumer:表示队列是否是单一活动消费者,true时,注册的消费组内只有一个消费者消费消息,其他被忽略,false时消息循环分发给所有消费者(默认false)System.out.println("DirectReceiver消费者收到消息 : " + testMessage.toString());x-dead-letter-routing-key:死信消息路由键,在消息发送到死信交换器时会使用该路由键,如果不设置,则使用消息的原来的路由键值。

dys000000的博客 1210
上一篇: 三个线程交替打印A,B,C
下一篇: Presto-0.228
Mr.ChowSit
博客等级 码龄11年 30粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值