using FictionArchive.Service.Shared.Services.EventBus; using Newtonsoft.Json; using Quartz; namespace FictionArchive.Service.SchedulerService.Models.JobTemplates; public class EventJobTemplate : IJob { private readonly IEventBus _eventBus; private readonly ILogger _logger; public const string EventTypeParameter = "RoutingKey"; public const string EventDataParameter = "MessageData"; public EventJobTemplate(IEventBus eventBus, ILogger logger) { _eventBus = eventBus; _logger = logger; } public async Task Execute(IJobExecutionContext context) { try { var eventData = context.MergedJobDataMap.GetString(EventDataParameter); var eventType = context.MergedJobDataMap.GetString(EventTypeParameter); var eventObject = JsonConvert.DeserializeObject(eventData); await _eventBus.Publish(eventObject, eventType); } catch (Exception ex) { _logger.LogError(ex, "An error occurred while running an event job."); } } }