Я пытаюсь создать несколько потребителей очереди amqp на одном канале в Go.
Проблема, с которой я сталкиваюсь, заключается в том, что если создать одного из 3 потребителей не удается, и это первый потребитель, которого я пытаюсьсоздать, канал закрыт.
Есть ли способ предотвратить это или мне нужно заново создать канал?
Пример
Предполагается, что клиент очереди-a "не существует, это приведет к ошибке при создании потребителя очереди для" client-b ", так как канал был закрыт в этот момент. Ошибка будет Exception (504) Reason: "channel/connection is not open"
package main
import (
"github.com/streadway/amqp"
"log"
)
func check(err error) {
if err != nil {
panic(err)
}
}
func TestChannelProblems() {
// Setup AMQP stuff
connection, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
check(err)
log.Println("Queue connection ok")
channel, err := connection.Channel()
check(err)
log.Println("Queue channel ok")
queuesToConnectTo := []string{"client-a", "client-b"}
for i, _ := range queuesToConnectTo {
queueName := queuesToConnectTo[i]
_, err := channel.Consume(queueName, "", false, false, false, false, nil)
if err != nil {
log.Printf("Connecting to queue %v failed: %v", queueName, err.Error())
}
// ... Here would be the logic to use the return value of channel.Consume
}
}