package rabbit import ( "context" "errors" rmq "github.com/rabbitmq/rabbitmq-amqp-go-client/pkg/rabbitmqamqp" ) func NewConsumer(ctx context.Context, tag string, xqk *XQK) (*rmq.Consumer, error) { cli := client if tag != "default" { var err error cli, err = NewClient(ctx, tag) if err != nil { return nil, err } } return cli.conn.NewConsumer(ctx, xqk.Queue, nil) } func Consuming(ctx context.Context, consumer *rmq.Consumer, msgChan chan<- []byte) { for { deliCtx, err := consumer.Receive(ctx) if errors.Is(err, context.Canceled) { // The consumer was closed correctly return } if err != nil { // An error occurred receiving the message return } for _, data := range deliCtx.Message().Data { msgChan <- data } err = deliCtx.Accept(ctx) if err != nil { // accept error return } } }