feat: refactor the mq’s RegisterConsumer method to make it easier to inject (#581)

This commit is contained in:
Ryo
2025-08-05 18:05:32 +08:00
committed by GitHub
parent c11780b28d
commit c9c900adb0
7 changed files with 34 additions and 8 deletions

View File

@@ -24,7 +24,20 @@ type Producer interface {
BatchSend(ctx context.Context, bodyArr [][]byte, opts ...SendOpt) error
}
type Consumer interface{}
var defaultSVC ConsumerService
func SetDefaultSVC(svc ConsumerService) {
defaultSVC = svc
}
func GetDefaultSVC() ConsumerService {
return defaultSVC
}
type ConsumerService interface {
RegisterConsumer(nameServer, topic, group string, consumerHandler ConsumerHandler, opts ...ConsumerOpt) error
}
type ConsumerHandler interface {
HandleMessage(ctx context.Context, msg *Message) error
}

View File

@@ -29,13 +29,23 @@ import (
type (
Producer = eventbus.Producer
Consumer = eventbus.Consumer
ConsumerService = eventbus.ConsumerService
ConsumerHandler = eventbus.ConsumerHandler
ConsumerOpt = eventbus.ConsumerOpt
Message = eventbus.Message
)
func RegisterConsumer(nameServer, topic, group string, consumerHandler eventbus.ConsumerHandler, opts ...eventbus.ConsumerOpt) error {
type consumerServiceImpl struct{}
func NewConsumerService() ConsumerService {
return &consumerServiceImpl{}
}
func DefaultSVC() ConsumerService {
return eventbus.GetDefaultSVC()
}
func (consumerServiceImpl) RegisterConsumer(nameServer, topic, group string, consumerHandler eventbus.ConsumerHandler, opts ...eventbus.ConsumerOpt) error {
tp := os.Getenv(consts.MQTypeKey)
switch tp {
case "nsq":