检测 Go 消费者中失效的 RabbitMQ 连接
在 RabbitMQ 消费者脚本中,检测与 RabbitMQ 服务器的连接何时失效至关重要。否则,消费者可能无法接收消息,甚至无限期地继续运行。
RabbitMQ 消费者脚本中使用的 Streadway/amqp 库提供了一种尝试保持连接活动的心跳机制。但是,仅依靠心跳间隔可能不足以可靠地检测死连接。
相反,更可靠的方法涉及使用 amqp.Connection 对象的 NotifyClose() 方法。此方法返回一个在发生传输或协议错误时发出信号的通道:
import "github.com/rabbitmq/amqp091-go" func main() { conn, err := amqp.Dial(...) notify := conn.NotifyClose(make(chan *amqp.Error)) ... }
在 main 函数内,每当建立或重新建立连接时,您应该创建一个新的通知通道并启动一个选择监视错误通道和消息通道的语句。如果错误通道上收到错误,则意味着连接已断开,脚本应尝试重新连接。
以下是如何实现此重新连接循环的示例:
for { conn, _ := amqp.Dial(...) notify := conn.NotifyClose(make(chan *amqp.Error)) ch, _ := conn.Channel() msgs, _ := ch.Consume(...) for { select { case err := <p>通过使用 NotifyClose() 持续监视连接的错误通道,您可以确保您的使用者脚本保持响应并正常处理连接故障。这样,脚本将在必要时自动重新连接到 RabbitMQ 服务器,从而降低丢失消息或过早停止的风险。</p>
以上是Go 消费者如何可靠地检测和处理失效的 RabbitMQ 连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文演示了创建模拟和存根进行单元测试。 它强调使用接口,提供模拟实现的示例,并讨论最佳实践,例如保持模拟集中并使用断言库。 文章

本文探讨了GO的仿制药自定义类型约束。 它详细介绍了界面如何定义通用功能的最低类型要求,从而改善了类型的安全性和代码可重复使用性。 本文还讨论了局限性和最佳实践

本文使用跟踪工具探讨了GO应用程序执行流。 它讨论了手册和自动仪器技术,比较诸如Jaeger,Zipkin和Opentelemetry之类的工具,并突出显示有效的数据可视化

本文讨论了GO的反思软件包,用于运行时操作代码,对序列化,通用编程等有益。它警告性能成本,例如较慢的执行和更高的内存使用,建议明智的使用和最佳

本文讨论了GO中使用表驱动的测试,该方法使用测试用例表来测试具有多个输入和结果的功能。它突出了诸如提高的可读性,降低重复,可伸缩性,一致性和A

本文讨论了通过go.mod,涵盖规范,更新和冲突解决方案管理GO模块依赖关系。它强调了最佳实践,例如语义版本控制和定期更新。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

Dreamweaver CS6
视觉化网页开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3汉化版
中文版,非常好用