Go 如何在读取RabbitMQ队列时检测错误
我正在从RabbitMQ队列读取如下消息:Go 如何在读取RabbitMQ队列时检测错误,go,error-handling,rabbitmq,Go,Error Handling,Rabbitmq,我正在从RabbitMQ队列读取如下消息: messages, err := channel.Consume( queue, // queue queue, // consumer - same as queue false, // auto-ack false, // exclusive false, // no-local false, // no-wait nil) // args if err != nil {
messages, err := channel.Consume(
queue, // queue
queue, // consumer - same as queue
false, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil) // args
if err != nil {
// handle error
}
loop:
for {
select {
case cmd := <-cmdChannel:
if cmd == cmdStop {
break loop
}
case message := <-messages:
go process(message)
}
}
消息,错误:=channel.Consume(
队列,//队列
队列,//使用者-与队列相同
false,//自动确认
false,//独占
false,//没有本地
false,//没有等待
nil)//args
如果出错!=零{
//处理错误
}
循环:
为了{
挑选{
case cmd:=假设您使用的是streadway/amqp
,这可能就是您想要的
func(*通道)NotifyClose
func(ch*频道)NotifyClose(c chan*错误)chan*错误
NotifyClose在服务器发送通道时注册侦听器
或连接形式的连接异常。关闭或
Channel.Close方法。将向所有用户广播连接异常
开放通道和所有通道将关闭,其中
例外情况将仅广播到此频道的侦听器
通道关闭时,提供的通道将关闭,并处于关闭状态
优雅关闭,不会发送错误
假设您正在使用streadway/amqp
,这可能就是您正在寻找的@ttomalak这看起来很好,请给出答案,以便我可以接受。请引用或转述您答案正文中的相关内容。链接可能会随着时间的推移而失效,此时此答案将不再有助于任何人搜索。我如果这一联系失败,就有更大的问题需要担心。