Select Git revision
producer.go
producer.go 766 B
package mem
import (
"gitlab.com/uafrica/go-utils/errors"
"gitlab.com/uafrica/go-utils/queues"
)
//can only produce locally if also consuming local
func NewProducer(consumer *Consumer) queues.IProducer {
if consumer == nil {
panic(errors.Errorf("cannot product locally without consumer"))
}
return &producer{
consumer: consumer,
}
}
type producer struct {
consumer *Consumer
}
func (producer *producer) Send(event queues.Event) (string, error) {
q, err := producer.consumer.Queue(event.QueueName)
if err != nil {
return "", errors.Wrapf(err, "failed to get/create queue(%s)", event.QueueName)
}
msgID, err := q.Send(event)
if err != nil {
return "", errors.Wrapf(err, "failed to send to queue(%s)", event.QueueName)
}
return msgID, nil
}