为了账号安全,请及时绑定邮箱和手机立即绑定

从 golang 使用 AMQP 1.0 连接到 IBM MQ 时出现 EOF

从 golang 使用 AMQP 1.0 连接到 IBM MQ 时出现 EOF

Go
慕容森 2023-08-14 16:19:34
我已在本地 Windows VM 上安装了 IBM MQ (8.0.0.4),并按照文档中的说明启用 AMQP ( https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm .mq.con.doc/tamqp_creating.htm),并且还禁用了身份验证,因为这只是本地开发环境。完成后,我可以使用 IBM mqlight 包中的 node.js 示例从主机操作系统进行连接:>npm install mqlight...>node node_modules/mqlight/samples/recv.js -s amqp://windows-10:5672Connected to amqp://windows-10:5672 using client-id recv_126117cSubscribed to pattern: public但是,当尝试使用 vcabbage/amqp(版本 0.12.5)从 golang 应用程序进行连接时,它会在尝试拨号主机时返回 EOF 错误。最小的例子:package mainimport (    "fmt"    "pack.ag/amqp")func main() {    _, err := amqp.Dial("amqp://windows-10:5672")    fmt.Println(err) // EOF}IBM MQ 错误日志中未显示任何内容。不幸的是,Google 没有找到任何通过 golang 中的 AMQP 1.0 连接到 IBM MQ 的相关结果,所以我陷入了困境。有人有什么想法吗?
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

所以解决方案显然是使用 SASL Anonymous 模式;这允许客户端连接。


package main


import (

    "fmt"


    "pack.ag/amqp"

)


func main() {

    _, err := amqp.Dial("amqp://windows-10:5672", amqp.ConnSASLAnonymous())

    fmt.Println(err) // nil

}

如果有人想尝试使其在“正常”模式下工作,那么 IBM MQ 似乎在发送初始标头数据包后立即关闭通道。无论如何,EOF 都是从接收 goroutine 中冒出来的。


查看完整回答
反对 回复 2023-08-14
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信