feat: refactor the mq’s RegisterConsumer method to make it easier to inject (#581)
This commit is contained in:
parent
c11780b28d
commit
c9c900adb0
|
|
@ -64,7 +64,9 @@ import (
|
||||||
singleagentImpl "github.com/coze-dev/coze-studio/backend/crossdomain/impl/singleagent"
|
singleagentImpl "github.com/coze-dev/coze-studio/backend/crossdomain/impl/singleagent"
|
||||||
variablesImpl "github.com/coze-dev/coze-studio/backend/crossdomain/impl/variables"
|
variablesImpl "github.com/coze-dev/coze-studio/backend/crossdomain/impl/variables"
|
||||||
workflowImpl "github.com/coze-dev/coze-studio/backend/crossdomain/impl/workflow"
|
workflowImpl "github.com/coze-dev/coze-studio/backend/crossdomain/impl/workflow"
|
||||||
|
"github.com/coze-dev/coze-studio/backend/infra/contract/eventbus"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/impl/checkpoint"
|
"github.com/coze-dev/coze-studio/backend/infra/impl/checkpoint"
|
||||||
|
implEventbus "github.com/coze-dev/coze-studio/backend/infra/impl/eventbus"
|
||||||
)
|
)
|
||||||
|
|
||||||
type eventbusImpl struct {
|
type eventbusImpl struct {
|
||||||
|
|
@ -144,6 +146,7 @@ func Init(ctx context.Context) (err error) {
|
||||||
|
|
||||||
func initEventBus(infra *appinfra.AppDependencies) *eventbusImpl {
|
func initEventBus(infra *appinfra.AppDependencies) *eventbusImpl {
|
||||||
e := &eventbusImpl{}
|
e := &eventbusImpl{}
|
||||||
|
eventbus.SetDefaultSVC(implEventbus.NewConsumerService())
|
||||||
e.resourceEventBus = search.NewResourceEventBus(infra.ResourceEventProducer)
|
e.resourceEventBus = search.NewResourceEventBus(infra.ResourceEventProducer)
|
||||||
e.projectEventBus = search.NewProjectEventBus(infra.AppEventProducer)
|
e.projectEventBus = search.NewProjectEventBus(infra.AppEventProducer)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ func InitService(c *ServiceComponents) (*KnowledgeApplicationService, error) {
|
||||||
ModelFactory: chatmodelImpl.NewDefaultFactory(),
|
ModelFactory: chatmodelImpl.NewDefaultFactory(),
|
||||||
})
|
})
|
||||||
|
|
||||||
if err = eventbus.RegisterConsumer(nameServer, consts.RMQTopicKnowledge, consts.RMQConsumeGroupKnowledge, knowledgeEventHandler); err != nil {
|
if err = eventbus.DefaultSVC().RegisterConsumer(nameServer, consts.RMQTopicKnowledge, consts.RMQConsumeGroupKnowledge, knowledgeEventHandler); err != nil {
|
||||||
return nil, fmt.Errorf("register knowledge consumer failed, err=%w", err)
|
return nil, fmt.Errorf("register knowledge consumer failed, err=%w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,14 +71,14 @@ func InitService(ctx context.Context, s *ServiceComponents) (*SearchApplicationS
|
||||||
logs.Infof("start search domain consumer...")
|
logs.Infof("start search domain consumer...")
|
||||||
nameServer := os.Getenv(consts.MQServer)
|
nameServer := os.Getenv(consts.MQServer)
|
||||||
|
|
||||||
err := eventbus.RegisterConsumer(nameServer, consts.RMQTopicApp, consts.RMQConsumeGroupApp, searchConsumer)
|
err := eventbus.DefaultSVC().RegisterConsumer(nameServer, consts.RMQTopicApp, consts.RMQConsumeGroupApp, searchConsumer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("register search consumer failed, err=%w", err)
|
return nil, fmt.Errorf("register search consumer failed, err=%w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
searchResourceConsumer := search.NewResourceHandler(ctx, s.ESClient)
|
searchResourceConsumer := search.NewResourceHandler(ctx, s.ESClient)
|
||||||
|
|
||||||
err = eventbus.RegisterConsumer(nameServer, consts.RMQTopicResource, consts.RMQConsumeGroupResource, searchResourceConsumer)
|
err = eventbus.DefaultSVC().RegisterConsumer(nameServer, consts.RMQTopicResource, consts.RMQConsumeGroupResource, searchResourceConsumer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("register search consumer failed, err=%w", err)
|
return nil, fmt.Errorf("register search consumer failed, err=%w", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ func (suite *KnowledgeTestSuite) SetupSuite() {
|
||||||
|
|
||||||
suite.handler = knowledgeEventHandler
|
suite.handler = knowledgeEventHandler
|
||||||
|
|
||||||
err = eventbus.RegisterConsumer(rmqEndpoint, consts.RMQTopicKnowledge, consts.RMQConsumeGroupKnowledge, suite)
|
err = eventbus.DefaultSVC().RegisterConsumer(rmqEndpoint, consts.RMQTopicKnowledge, consts.RMQConsumeGroupKnowledge, suite)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,8 @@ import (
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/nodes/exit"
|
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/nodes/exit"
|
||||||
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/nodes/qa"
|
"github.com/coze-dev/coze-studio/backend/domain/workflow/internal/nodes/qa"
|
||||||
repo2 "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo"
|
repo2 "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/repo"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/impl/cache/redis"
|
|
||||||
schema2 "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/schema"
|
schema2 "github.com/coze-dev/coze-studio/backend/domain/workflow/internal/schema"
|
||||||
|
"github.com/coze-dev/coze-studio/backend/infra/impl/cache/redis"
|
||||||
"github.com/coze-dev/coze-studio/backend/infra/impl/checkpoint"
|
"github.com/coze-dev/coze-studio/backend/infra/impl/checkpoint"
|
||||||
mock "github.com/coze-dev/coze-studio/backend/internal/mock/infra/contract/idgen"
|
mock "github.com/coze-dev/coze-studio/backend/internal/mock/infra/contract/idgen"
|
||||||
storageMock "github.com/coze-dev/coze-studio/backend/internal/mock/infra/contract/storage"
|
storageMock "github.com/coze-dev/coze-studio/backend/internal/mock/infra/contract/storage"
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,20 @@ type Producer interface {
|
||||||
BatchSend(ctx context.Context, bodyArr [][]byte, opts ...SendOpt) error
|
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 {
|
type ConsumerHandler interface {
|
||||||
HandleMessage(ctx context.Context, msg *Message) error
|
HandleMessage(ctx context.Context, msg *Message) error
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,23 @@ import (
|
||||||
|
|
||||||
type (
|
type (
|
||||||
Producer = eventbus.Producer
|
Producer = eventbus.Producer
|
||||||
Consumer = eventbus.Consumer
|
ConsumerService = eventbus.ConsumerService
|
||||||
ConsumerHandler = eventbus.ConsumerHandler
|
ConsumerHandler = eventbus.ConsumerHandler
|
||||||
ConsumerOpt = eventbus.ConsumerOpt
|
ConsumerOpt = eventbus.ConsumerOpt
|
||||||
Message = eventbus.Message
|
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)
|
tp := os.Getenv(consts.MQTypeKey)
|
||||||
switch tp {
|
switch tp {
|
||||||
case "nsq":
|
case "nsq":
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue