доброго времени суток! у меня в приложении есть консьюмер сообщений rabbitmq. после запуска приложения на сервере он отрабатывает только 1 раз и затем перестает возвращать канал с данными. в чем может быть проблема? скорее всего что-то связано с каналами, но не могу понять что именно, не так много опыта на go. заранее спасибо! метод консьюмера прилагаю ниже
func (c *Consumer) Consume(ctx context.Context) (<-chan types.ReceiptMessage, error) {
receiptChan := make(chan types.ReceiptMessage)
channel, err := c.rabbitmqConsumer.ListenQueue(ctx)
if err != nil {
logger.AppLogger().Errorw("Consume() -> c.consumer.ListenQueue(ctx)", "error", err.Error())
return nil, err
}
go func() {
for {
select {
case <-ctx.Done():
close(receiptChan)
return
case msg, open := <-channel:
if !open {
close(receiptChan)
return
}
var receiptMessage types.ReceiptMessage
err = json.Unmarshal(msg.Body, &receiptMessage)
if err != nil {
logger.AppLogger().Errorw(
"Consume() -> json.Unmarshal(msg.Body, &receiptMessage)",
"error", err.Error(),
)
continue
}
receiptChan <- receiptMessage
}
}
}()
return receiptChan, nil
}