package rabbit import ( "context" rmq "github.com/rabbitmq/rabbitmq-amqp-go-client/pkg/rabbitmqamqp" ) func NewPublisher(ctx context.Context, tag string, xqk *XQK) (*rmq.Publisher, error) { cli := client if tag != "default" { var err error cli, err = NewClient(ctx, tag) if err != nil { return nil, err } } return cli.conn.NewPublisher(context.Background(), &rmq.ExchangeAddress{ Exchange: xqk.Exchange, Key: xqk.Key, }, nil) } func Publishing(ctx context.Context, publisher *rmq.Publisher, msgChan <-chan []byte) { for { select { case msg := <-msgChan: result, err := publisher.Publish(ctx, rmq.NewMessage(msg)) if err != nil { _ = err // publish error continue } switch result.Outcome.(type) { case *rmq.StateAccepted: // "message accepted" case *rmq.StateReleased: // "message not routed" case *rmq.StateRejected: // "message rejected" default: // *rmp.StateModified // *rmq.StateReceived } case <-ctx.Done(): return } } }