35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using MassTransit;
|
|
using Newtonsoft.Json;
|
|
using Quartz;
|
|
|
|
namespace FictionArchive.Service.SchedulerService.Models.JobTemplates;
|
|
|
|
public class EventJobTemplate : IJob
|
|
{
|
|
private readonly IBus _bus;
|
|
private readonly ILogger<EventJobTemplate> _logger;
|
|
|
|
public const string EventTypeParameter = "RoutingKey";
|
|
public const string EventDataParameter = "MessageData";
|
|
|
|
public EventJobTemplate(IBus bus, ILogger<EventJobTemplate> 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.");
|
|
}
|
|
}
|
|
} |