using MassTransit; using Newtonsoft.Json; using Quartz; namespace FictionArchive.Service.SchedulerService.Models.JobTemplates; public class EventJobTemplate : IJob { private readonly IBus _bus; private readonly ILogger _logger; public const string EventTypeParameter = "RoutingKey"; public const string EventDataParameter = "MessageData"; public EventJobTemplate(IBus bus, ILogger logger) { _bus = bus; _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 _bus.Publish(eventObject); } catch (Exception ex) { _logger.LogError(ex, "An error occurred while running an event job."); } } }