✨ Update dependencies, enhance NATS consumer configuration, and improve error handling in message processing. Introduce telemetry support with OpenTelemetry for tracing and metrics. Refactor README to include new configuration options and update tests for improved coverage of error scenarios.
This commit is contained in:
+103
-32
@@ -1,5 +1,6 @@
|
||||
// Code generated by Wire. DO NOT EDIT.
|
||||
|
||||
//go:generate go run -mod=mod github.com/google/wire/cmd/wire
|
||||
//go:build !wireinject
|
||||
// +build !wireinject
|
||||
|
||||
@@ -12,44 +13,114 @@ import (
|
||||
"caatsm/internal/infra/log"
|
||||
"caatsm/internal/infra/nats"
|
||||
"caatsm/internal/infra/postgres"
|
||||
"github.com/google/wire"
|
||||
)
|
||||
|
||||
// Injectors from wire.go:
|
||||
|
||||
func buildAppComponents() (*appComponents, error) {
|
||||
parserParser := parser.ProvideParser()
|
||||
configConfig, err := config.ProvideConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pool, err := postgres.ProvideDB(configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
logger, err := log.ProvideLogger(configConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
repository, err := postgres.ProvideRepository(pool, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
conn, err := nats.ProvideNATSConn(configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
jetStreamContext, err := nats.ProvideJetStream(conn, configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
publisher, err := nats.ProvidePublisher(jetStreamContext, configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
messageProcessor := app.NewMessageProcessor(parserParser, repository, publisher, logger)
|
||||
consumer, err := nats.ProvideConsumer(conn, jetStreamContext, messageProcessor, configConfig, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
diAppComponents := &appComponents{
|
||||
Processor: messageProcessor,
|
||||
Consumer: consumer,
|
||||
}
|
||||
return diAppComponents, nil
|
||||
}
|
||||
|
||||
func buildAppComponentsWithConfig(cfg *config.Config) (*appComponents, error) {
|
||||
parserParser := parser.ProvideParser()
|
||||
pool, err := postgres.ProvideDB(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
logger, err := log.ProvideLogger(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
repository, err := postgres.ProvideRepository(pool, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
conn, err := nats.ProvideNATSConn(cfg, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
jetStreamContext, err := nats.ProvideJetStream(conn, cfg, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
publisher, err := nats.ProvidePublisher(jetStreamContext, cfg, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
messageProcessor := app.NewMessageProcessor(parserParser, repository, publisher, logger)
|
||||
consumer, err := nats.ProvideConsumer(conn, jetStreamContext, messageProcessor, cfg, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
diAppComponents := &appComponents{
|
||||
Processor: messageProcessor,
|
||||
Consumer: consumer,
|
||||
}
|
||||
return diAppComponents, nil
|
||||
}
|
||||
|
||||
// wire.go:
|
||||
|
||||
// InitializeApp initializes the application with all dependencies
|
||||
func InitializeApp() (*app.MessageProcessor, *nats.Consumer, error) {
|
||||
configConfig, err := config.ProvideConfig()
|
||||
comps, err := buildAppComponents()
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
zapLogger, err := log.ProvideLogger(configConfig)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
pgxpoolPool, err := postgres.ProvideDB(configConfig)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
adapterRepository, err := postgres.ProvideRepository(pgxpoolPool, zapLogger)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
natsConn, err := nats.ProvideNATSConn(configConfig, zapLogger)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
natsJetStreamContext, err := nats.ProvideJetStream(natsConn, configConfig, zapLogger)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
adapterPublisher, err := nats.ProvidePublisher(natsJetStreamContext, configConfig, zapLogger)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
parserParser := parser.ProvideParser()
|
||||
appMessageProcessor := app.NewMessageProcessor(parserParser, adapterRepository, adapterPublisher, zapLogger)
|
||||
natsConsumer, err := nats.ProvideConsumer(natsConn, natsJetStreamContext, appMessageProcessor, configConfig, zapLogger)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return appMessageProcessor, natsConsumer, nil
|
||||
return comps.Processor, comps.Consumer, nil
|
||||
}
|
||||
|
||||
// InitializeAppWithConfig wires dependencies using a pre-loaded configuration.
|
||||
func InitializeAppWithConfig(cfg *config.Config) (*app.MessageProcessor, *nats.Consumer, error) {
|
||||
comps, err := buildAppComponentsWithConfig(cfg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return comps.Processor, comps.Consumer, nil
|
||||
}
|
||||
|
||||
var runtimeSet = wire.NewSet(log.ProvideLogger, postgres.ProvideDB, postgres.ProvideRepository, nats.ProvideNATSConn, nats.ProvideJetStream, nats.ProvidePublisher, parser.ProvideParser, app.NewMessageProcessor, nats.ProvideConsumer)
|
||||
|
||||
type appComponents struct {
|
||||
Processor *app.MessageProcessor
|
||||
Consumer *nats.Consumer
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user