Files
qvyun/backend/providers/events/config.go
2025-01-09 19:11:01 +08:00

49 lines
913 B
Go

package events
import (
"context"
"git.ipao.vip/rogeecn/atom/container"
"git.ipao.vip/rogeecn/atom/utils/opt"
"github.com/ThreeDotsLabs/watermill/message"
)
const DefaultPrefix = "Events"
func DefaultProvider() container.ProviderContainer {
return container.ProviderContainer{
Provider: Provide,
Options: []opt.Option{
opt.Prefix(DefaultPrefix),
},
}
}
type Config struct {
ConsumerGroup string
Brokers []string
}
type PubSub struct {
Publisher message.Publisher
Subscriber message.Subscriber
Router *message.Router
}
func (ps *PubSub) Serve(ctx context.Context) error {
if err := ps.Router.Run(ctx); err != nil {
return err
}
return nil
}
func (ps *PubSub) Handle(
handlerName string,
consumerTopic string,
publisherTopic string,
handler message.HandlerFunc,
) {
ps.Router.AddHandler(handlerName, consumerTopic, ps.Subscriber, publisherTopic, ps.Publisher, handler)
}