首页/新闻资讯/正文详情

【RabbitMQ #3】 | Go 客户端 + SpringAMQP

发布时间:2026/9/27 3:31:28 来源:云帆数科 栏目:资讯中心
【RabbitMQ #3】 | Go 客户端 + SpringAMQP
一、RabbitMQ 基础概念AMQP 协议AMQP高级消息队列协议与语言、平台无关的消息协议RabbitMQ 基于该协议。Spring AMQP 简介Spring AMQP 是基于 AMQP 协议封装的 API 规范分为两部分spring-amqp基础抽象层spring-rabbit底层 RabbitMQ 具体实现二、Go 客户端安装注意这里有两套 Go 客户端新版官方rabbitmq-amqp-go-clientAMQP 1.0社区常用streadway/amqpAMQP 0-9-1下面 Demo 用的这个学习推荐# 新版官方客户端安装 go get github.com/rabbitmq/rabbitmq-amqp-go-client导入import ( context log rmq github.com/rabbitmq/rabbitmq-amqp-go-client/pkg/rabbitmqamqp )下面示例代码使用的是streadway/amqpAMQP0-9-1目前学习最简单和 SpringAMQP 底层协议一致三、简单模型生产者直接发消息到队列Simple 模型流程Publisher → Queue → Consumer 案例simple.queue在 RabbitMQ 控制台创建队列simple.queue代码里QueueDeclare是幂等不存在自动创建生产者发送消息到队列消费者监听队列接收消息SpringAMQP 开发步骤对照方便 Java 转 Go 理解引入 RabbitMQ 依赖配置 RabbitMQ 服务信息host、port、virtual-host、username、password发送消息使用RabbitTemplate消费消息使用RabbitListener注解监听队列Go 生产者代码send.go等价 SpringrabbitTemplate.convertAndSend(queueName, msg)package main import ( fmt github.com/streadway/amqp ) func main() { // 1. 连接 rabbitmq conn, err : amqp.Dial(amqp://guest:guestlocalhost:5672/) if err ! nil { panic(err) } defer conn.Close() // 2. 创建通道 ch, err : conn.Channel() if err ! nil { panic(err) } defer ch.Close() queueName : simple.queue // 3. 声明队列幂等。队列存在则不操作不存在自动创建 _, err ch.QueueDeclare( queueName, false, // durable是否持久化 false, // autoDelete是否自动删除 false, // exclusive独占队列 false, // noWait nil, // args额外参数 ) if err ! nil { panic(err) } msg : hello, amqp! // 4. 发布消息 err ch.Publish( , // exchange空默认交换机和Spring行为一致 queueName, // routingKey直接填队列名消息直接路由到此队列 false, // mandatory false, // immediate amqp.Publishing{ ContentType: text/plain, Body: []byte(msg), }, ) if err ! nil { panic(err) } fmt.Printf(发送消息成功%s\n, msg) }Go 消费者代码consumer.go等价 SpringRabbitListener(queues simple.queue)持续监听队列package main import ( fmt github.com/streadway/amqp log ) func main() { // 1. 连接RabbitMQ conn, err : amqp.Dial(amqp://guest:guestlocalhost:5672/) if err ! nil { log.Fatalf(连接失败: %v, err) } defer conn.Close() // 2. 创建通道 ch, err : conn.Channel() if err ! nil { log.Fatalf(打开通道失败: %v, err) } defer ch.Close() queueName : simple.queue // 3. 声明队列幂等 _, err ch.QueueDeclare( queueName, false, false, false, false, nil, ) if err ! nil { log.Fatalf(声明队列失败: %v, err) } // 4. 注册消费者开始消费消息 msgs, err : ch.Consume( queueName, // 监听队列名 , // consumer true, // autoAcktrue收到消息自动确认和Spring默认近似 false, // exclusive false, // noLocal false, // noWait nil, // args ) if err ! nil { log.Fatalf(注册消费失败: %v, err) } fmt.Println(Go消费者启动监听 simple.queue ...) // 循环读取消息持续处理消息 for d : range msgs { msg : string(d.Body) fmt.Printf(go 消费者接收到消息[%s]\n, msg) fmt.Println(消息处理完成) } }四、核心要点总结连接地址不要写错amqp://账号:密码ip:5672/QueueDeclare幂等特性重复调用不会报错不存在则新建队列Simple 模型空交换机routingKey 直接写队列名消息直接投递队列autoAck自动确认消息收到后 MQ 立刻删除消息生产环境一般关闭手动 ACK 保证可靠性SpringAMQP 和 Go streadway/amqp 底层都是 AMQP0-9-1可以对照理解学习

相关推荐

我的第一篇博客:编程之路的起点
我的第一篇博客:编程之路的起点

一、自我介绍大家好,我是一名大一新生,目前正在系统地学习计算机基础知识与编程技能。选择写博客,一方面是为了记录自己的学习历程,另一方面也希望借此与更多同行交流,互相鼓励、共同进步。二、学习编程的目标我学习编… · 2026/9/27 3:31:22

华为MetaERP Oracle EBS / Fusion 资产折旧期间关闭业务影响、挽救路径与会计分录全汇总覆盖新增 / 折旧 / 计划外折旧 / 转移 / 重分类 / 调整 / CIP资本化
华为MetaERP Oracle EBS / Fusion 资产折旧期间关闭业务影响、挽救路径与会计分录全汇总覆盖新增 / 折旧 / 计划外折旧 / 转移 / 重分类 / 调整 / CIP资本化

Oracle EBS / Fusion 资产折旧期间关闭 业务影响、挽救路径与会计分录全汇总覆盖新增 / 折旧 / 计划外折旧 / 转移 / 重分类 / 调整 / CIP资本化 / 报废 / 重估减值等全部场景,并逐一给出标准系统分录编制日期:2026-09-26 | 适用版本&#… · 2026/9/27 3:31:22

消费品经销商规模化管理:跨部门数据协同实践方法
消费品经销商规模化管理:跨部门数据协同实践方法

导语 随着消费品企业经销商规模不断扩大,不少企业都会遇到若干业务部门数据口径不一致、跨部门数据不通、权责边界不清,最终导致经销商管理失控的问题。本文针对消费品经销商规模推广阶段,从单部门扩展到跨部门的数据协同需求,给出… · 2026/9/27 3:31:16

不用手环、无需基站!黎阳之光视频孪生无感定位,破解变电站人员管控痛点
不用手环、无需基站!黎阳之光视频孪生无感定位,破解变电站人员管控痛点

变电站属于高危电力作业场景,长期以来,很多场站选择UWB人员定位方案来保障检修作业安全。但在实际落地运维中,痛点接踵而至:作业人员忘记佩戴UWB手环就无法管控;手环转借他人,系统无法分辨真实身份&#xf… · 2026/9/27 4:18:26

3步搞定江油专业网站建设咨询完整流程防被黑
3步搞定江油专业网站建设咨询完整流程防被黑

3步搞定江油专业网站建设咨询完整流程防被黑 上周刚帮绵阳一个做建材的老板救火,他官网首页突然挂了满屏的赌博广告,后台密码改了也没用。问了一圈本地同行,有的说重装系统,有的说买高价安全服务,搞得他焦头烂额。这种网站被黑挂马不知道办怎么办的情况… · 2026/9/27 4:18:26

亲测有效!奶茶外卖打车直接抵
亲测有效!奶茶外卖打车直接抵

不止奶茶外卖!这些场景用券更值(最低0.01元起) 这张是通用无门槛立减券,只要走支付宝支付的实物类消费基本都能用,不用为了用券硬凑单,推荐几个日常高频又划算的用法:1. 早晚餐 下午茶&#xf… · 2026/9/27 4:18:14

从零搭建小米CyberDog ROS2控制系统:环境、编译与二次开发
从零搭建小米CyberDog ROS2控制系统:环境、编译与二次开发

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:17:50

银河麒麟V10装ToDesk全攻略:从依赖报错到黑屏权限解决
银河麒麟V10装ToDesk全攻略:从依赖报错到黑屏权限解决

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:17:50

网站开发网页加载很慢怎么办这份速查手册救急
网站开发网页加载很慢怎么办这份速查手册救急

网站开发网页加载很慢怎么办这份速查手册救急 网站做好了没人访问,十有八九是因为打开太慢,用户等不及直接关掉。别怪用户没耐心,是浏览器加载超时把流量全漏了。这份速查手册就是帮你快速定位“网页加载很慢怎么办”的实操指南,照着做能立竿见影。… · 2026/9/27 4:17:50

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码