package rabbit import ( "context" "fmt" "time" 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 // TODO time.Sleep(1 * time.Second) continue } switch result.Outcome.(type) { case *rmq.StateAccepted: // TODO: "Message accepted" case *rmq.StateReleased: // TODO: "Message not routed" case *rmq.StateRejected: // TODO: "Message rejected" default: // *rmp.StateModified // *rmq.StateReceived // TODO: ("Message state: %v", publishResult.Outcome) } case <-time.After(time.Second): // TODO fmt.Println("second passed") } } }