27 lines
753 B
Go
27 lines
753 B
Go
package messagingimp
|
|
|
|
import (
|
|
mb "github.com/tech/sendico/pkg/messaging/broker"
|
|
me "github.com/tech/sendico/pkg/messaging/envelope"
|
|
"github.com/tech/sendico/pkg/mlogger"
|
|
"github.com/tech/sendico/pkg/mutil/mzap"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type ChannelProducer struct {
|
|
logger mlogger.Logger
|
|
broker mb.Broker
|
|
}
|
|
|
|
func (p *ChannelProducer) SendMessage(envelope me.Envelope) error {
|
|
// TODO: won't work with Kafka, need to serialize/deserialize
|
|
if err := p.broker.Publish(envelope); err != nil {
|
|
p.logger.Warn("Failed to publish message", zap.Error(err), mzap.Envelope(envelope))
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func NewProducer(logger mlogger.Logger, broker mb.Broker) *ChannelProducer {
|
|
return &ChannelProducer{logger: logger.Named("producer"), broker: broker}
|
|
}
|