35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
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<EventJobTemplate> _logger;
|
|
|
|
public const string EventTypeParameter = "RoutingKey";
|
|
public const string EventDataParameter = "MessageData";
|
|
|
|
public EventJobTemplate(IEventBus eventBus, ILogger<EventJobTemplate> 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.");
|
|
}
|
|
}
|
|
} |