登录
首页 >  Golang >  Go问答

连接 golang 到 IBM MQ 时遇到 EOF 错误

来源:stackoverflow

时间:2024-03-05 10:54:25 435浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《连接 golang 到 IBM MQ 时遇到 EOF 错误》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我已在本地 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:5672
connected to amqp://windows-10:5672 using client-id recv_126117c
subscribed to pattern: public

但是,当尝试使用 vcabbage/amqp(版本 0.12.5)从 golang 应用程序进行连接时,它会在尝试拨号主机时返回 eof 错误。最小示例:

package main

import (
    "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 的相关结果,所以我陷入了困境。有人有什么想法吗?


解决方案


所以解决方案显然是使用 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 中冒出来的。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《连接 golang 到 IBM MQ 时遇到 EOF 错误》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>