feat: add notification events handling and MQTT integration
- Implemented notification event publishing with a new NotificationEventPublisher interface. - Created a noopNotificationEventPublisher for testing purposes. - Added functionality to publish notification created events via MQTT. - Introduced a new stream event publisher for handling job logs and updates. - Added database migration for popup_ads table. - Created tests for notification events and popup ads functionality. - Established MQTT connection and publishing helpers for event messages.
This commit is contained in:
@@ -36,17 +36,19 @@ func NewGRPCModule(ctx context.Context, cfg *config.Config, db *gorm.DB, rds *re
|
||||
cfg: cfg,
|
||||
}
|
||||
|
||||
var notificationPublisher service.NotificationEventPublisher = nil
|
||||
if publisher, err := mqtt.NewMQTTBootstrap(jobService, agentRuntime, appLogger); err != nil {
|
||||
appLogger.Error("Failed to initialize MQTT publisher", "error", err)
|
||||
} else {
|
||||
module.mqttPublisher = publisher
|
||||
notificationPublisher = mqtt.NewNotificationPublisher(publisher.Client(), appLogger)
|
||||
agentRuntime.SetAgentEventHandler(func(eventType string, agent *dto.AgentWithStats) {
|
||||
mqtt.PublishAgentMQTTEvent(publisher.Client(), appLogger, eventType, agent)
|
||||
})
|
||||
}
|
||||
|
||||
agentRuntime.Register(grpcServer)
|
||||
service.Register(grpcServer, service.NewServices(rds, db, appLogger, cfg, videoService, agentRuntime))
|
||||
service.Register(grpcServer, service.NewServices(rds, db, appLogger, cfg, videoService, agentRuntime, notificationPublisher))
|
||||
if module.mqttPublisher != nil {
|
||||
module.mqttPublisher.Start(ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user