package rabbit import ( "context" "fmt" "time" rmq "github.com/rabbitmq/rabbitmq-amqp-go-client/pkg/rabbitmqamqp" ) func NewPublisher(ctx context.Context, tag string, xqr *XQR) (*rmq.Publisher, error) { cli := client if tag != "default" { endpoints, err := genEndpoints(tag) if err != nil { return nil, err } cli, err = NewClient(ctx, endpoints) if err != nil { return nil, err } } return cli.conn.NewPublisher(context.Background(), &rmq.ExchangeAddress{ Exchange: xqr.ExchangeName, Key: xqr.RoutingKey, }, nil) } func Publish(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 was not routed" case *rmq.StateRejected: // TODO: stateType := publishResult.Outcome.(*rmq.StateRejected) default: // TODO: ("Message state: %v", publishResult.Outcome) } case <-time.After(time.Second): // TODO fmt.Println("second passed") } } }