You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bunny连接RabbitMQ报错:Must be one of [:method, :headers, :body, :heartbeat]

解决RabbitMQ连接时出现的「Must be one of [:method, :headers, :body, :heartbeat]」错误

错误现象

使用Bunny连接RabbitMQ时,执行conn.start抛出错误,回溯信息如下:

.../amq-protocol-2.3.2/lib/amq/protocol/frame.rb:67:in `decode_header'
错误提示:Must be one of [:method, :headers, :body, :heartbeat]

排查出的低级错误

我排查后发现是连接端口/地址配置错误:误将RabbitMQ的连接端口写成了其他服务的端口(比如Redis的6379),或是连接到了非RabbitMQ服务的地址。此时客户端收到的不是RabbitMQ的AMQP协议帧,导致解码时无法识别帧类型,触发该错误。

修复方式

检查Bunny.new中的连接参数,确认:

  • host参数为RabbitMQ服务的正确地址
  • port参数为RabbitMQ的默认端口5672(或自定义配置的端口)

示例正确初始化代码:

conn = Bunny.new(host: "localhost", port: 5672, username: "guest", password: "guest")
conn.start

补充说明

这类低级错误容易在复制配置、多服务端口混淆时出现。如果遇到相同错误,优先检查连接参数的正确性,无需过度纠结AMQP协议帧的解码逻辑。

内容的提问来源于stack exchange,提问作者Ammypka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:55:55