✨ 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:
+52
-19
@@ -16,30 +16,63 @@ import (
|
||||
|
||||
// InitializeApp initializes the application with all dependencies
|
||||
func InitializeApp() (*app.MessageProcessor, *nats.Consumer, error) {
|
||||
wire.Build(
|
||||
// Config
|
||||
config.ProvideConfig,
|
||||
comps, err := buildAppComponents()
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
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(
|
||||
// Logger
|
||||
log.ProvideLogger,
|
||||
|
||||
// Database
|
||||
postgres.ProvideDB,
|
||||
postgres.ProvideRepository,
|
||||
|
||||
// Logger
|
||||
log.ProvideLogger,
|
||||
// NATS
|
||||
nats.ProvideNATSConn,
|
||||
nats.ProvideJetStream,
|
||||
nats.ProvidePublisher,
|
||||
|
||||
// Database
|
||||
postgres.ProvideDB,
|
||||
postgres.ProvideRepository,
|
||||
// Parser
|
||||
parser.ProvideParser,
|
||||
|
||||
// NATS
|
||||
nats.ProvideNATSConn,
|
||||
nats.ProvideJetStream,
|
||||
nats.ProvidePublisher,
|
||||
// App
|
||||
app.NewMessageProcessor,
|
||||
|
||||
// Parser
|
||||
parser.ProvideParser,
|
||||
// Consumer
|
||||
nats.ProvideConsumer,
|
||||
)
|
||||
|
||||
// App
|
||||
app.NewMessageProcessor,
|
||||
func buildAppComponents() (*appComponents, error) {
|
||||
wire.Build(
|
||||
config.ProvideConfig,
|
||||
runtimeSet,
|
||||
wire.Struct(new(appComponents), "*"),
|
||||
)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Consumer
|
||||
nats.ProvideConsumer,
|
||||
func buildAppComponentsWithConfig(cfg *config.Config) (*appComponents, error) {
|
||||
wire.Build(
|
||||
runtimeSet,
|
||||
wire.Struct(new(appComponents), "*"),
|
||||
)
|
||||
return nil, nil, nil
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
type appComponents struct {
|
||||
Processor *app.MessageProcessor
|
||||
Consumer *nats.Consumer
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user