分享
求助(附代码):rabbitmq:Exception (504) Reason: "channel/connection is not open"
JGbooks · · 7776 次点击 · 开始浏览 置顶这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
这是测试生产者
**代码**
```
func Send(queueName string, msg interface{}) error {
if ch == nil {
if err := InitRabbitmq(Url); err != nil {
log.Println(err)
return err
}
}
_, err := ch.QueueDeclarePassive(queueName, true, false, false, true, nil)
if err != nil {
q, err = ch.QueueDeclare(queueName, true, false, false, false, nil)
if err != nil {
log.Println(err)
return err
}
}
data, err := json.Marshal(msg)
if err != nil {
return err
}
count++
log.Println(q, count)
err = ch.Publish(queueName,
q.Name,
false,
false,
amqp.Publishing{
ContentType: "application/json",
Body: data,
})
if err != nil {
log.Println(err)
return err
}
return nil
}
```
```
func InitRabbitmq(url string) error {
var (
err error
)
conn, err = amqp.Dial(url)
if err != nil {
log.Println("Failed to connect to RabbitMq")
return err
}
ch, err = conn.Channel()
if err != nil {
defer conn.Close()
log.Println("Failed to open a channel")
return err
}
mqsync.Lock()
defer mqsync.Unlock()
q, err = ch.QueueDeclare("hello_world", true, false, false, false, nil)
if err != nil {
log.Println("Failed to declare queue:", err.Error())
return err
}
log.Println("rabbitmq init ok!")
return nil
}
```
```
var Url = `amqp://guest:guest@0.0.0.0:5672/`
func main(){
log.SetFlags(log.Lshortfile)
err := InitRabbitmq(Url)
if err != nil {
log.Println(err)
}
go func(){
data :=map[string]interface{}{
"1":hello,
}
for {
err := Send(data)
if err != nil {
log.Println(err)
}
time.Sleep(1 * time.Second)
}
}
go func(){
data :=map[string]interface{}{
"2":world,
}
for {
err := Send(data)
if err != nil {
log.Println(err)
}
time.Sleep(1 * time.Second)
}
}
select {}
}
```
**问题:**

**错误信息**

**分析**
>测试发现不是消费者好着,通过再次启动此程序发现
询问还有其他问题影响吗?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信7776 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传