I'm reading messages from RabbitMQ queue like this:
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)
}
}
There could be situations when reading from messages
fail, like network error, or RabbitMQ's channel was invalidated due to an error. How to detect such errors and get relevant error message?