init push
This commit is contained in:
45
backend/mq/mq.go
Normal file
45
backend/mq/mq.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package mq
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/google/wire"
|
||||
|
||||
"github.com/chaitin/panda-wiki/config"
|
||||
"github.com/chaitin/panda-wiki/log"
|
||||
"github.com/chaitin/panda-wiki/mq/nats"
|
||||
"github.com/chaitin/panda-wiki/mq/types"
|
||||
)
|
||||
|
||||
// Message represents a generic message that can be from either Kafka or NATS
|
||||
type Message interface {
|
||||
GetData() []byte
|
||||
GetTopic() string
|
||||
}
|
||||
|
||||
type MQConsumer interface {
|
||||
StartConsumerHandlers(ctx context.Context) error
|
||||
RegisterHandler(topic string, handler func(ctx context.Context, msg types.Message) error) error
|
||||
Close() error
|
||||
}
|
||||
|
||||
type MQProducer interface {
|
||||
Produce(ctx context.Context, topic string, key string, value []byte) error
|
||||
}
|
||||
|
||||
func NewMQConsumer(config *config.Config, logger *log.Logger) (MQConsumer, error) {
|
||||
if config.MQ.Type == "nats" {
|
||||
return nats.NewMQConsumer(logger, config)
|
||||
}
|
||||
return nil, fmt.Errorf("invalid mq type: %s", config.MQ.Type)
|
||||
}
|
||||
|
||||
func NewMQProducer(config *config.Config, logger *log.Logger) (MQProducer, error) {
|
||||
if config.MQ.Type == "nats" {
|
||||
return nats.NewMQProducer(config, logger)
|
||||
}
|
||||
return nil, fmt.Errorf("invalid mq type: %s", config.MQ.Type)
|
||||
}
|
||||
|
||||
var ProviderSet = wire.NewSet(NewMQConsumer, NewMQProducer)
|
||||
Reference in New Issue
Block a user