コード例 #1
0
 public BuyTicketCommandHandler(IIntegrationEventRepository <TicketBoughtEvent> eventRepository,
                                ILogger <BuyTicketCommandHandler> logger, ICounter <IProcessedCommands> processedCommandsCounter)
 {
     _eventRepository          = eventRepository;
     _logger                   = logger;
     _processedCommandsCounter = processedCommandsCounter;
 }
コード例 #2
0
 public IntegrationEventManager(
     IIntegrationEventRepository integrationEventRepository,
     IWebhookPublisher webhookPublisher)
 {
     _integrationEventRepository = integrationEventRepository;
     _webhookPublisher           = webhookPublisher;
 }
コード例 #3
0
 /// <summary>
 /// IntegrationEventsController constructor
 /// </summary>
 /// <param name="repository"></param>
 /// <param name="membershipManager"></param>
 /// <param name="userManager"></param>
 /// <param name="configuration"></param>
 /// <param name="httpContextAccessor"></param>
 public IntegrationEventsController(
     IIntegrationEventRepository repository,
     IMembershipManager membershipManager,
     ApplicationIdentityUserManager userManager,
     IConfiguration configuration,
     IHttpContextAccessor httpContextAccessor) : base(repository, userManager, httpContextAccessor, membershipManager, configuration)
 {
     _repository = repository;
 }
コード例 #4
0
 private static async Task PublishUnprocessedEventsPeriodicallyAsync <T>(ILogger logger, TimeSpan period,
                                                                         IIntegrationEventRepository <T> eventRepository, IMessageBroker messageBroker) where T : class, IIntegrationEvent
 {
     while (true)
     {
         await Task.Delay(period);
         await PublishUnprocessedEventsAsync(logger, eventRepository, messageBroker);
     }
 }
コード例 #5
0
 public WebhookPublisher(
     IIntegrationEventRepository eventRepository,
     IIntegrationEventLogRepository eventLogRepository,
     IIntegrationEventSubscriptionRepository eventSubscriptionRepository,
     IIntegrationEventSubscriptionAttemptRepository integrationEventSubscriptionAttemptRepository,
     IBackgroundJobClient backgroundJobClient,
     IQueueItemRepository queueItemRepository,
     IHubContext <NotificationHub> hub)
 {
     _eventRepository             = eventRepository;
     _eventLogRepository          = eventLogRepository;
     _eventSubscriptionRepository = eventSubscriptionRepository;
     _backgroundJobClient         = backgroundJobClient;
     _queueItemRepository         = queueItemRepository;
     _attemptRepository           = integrationEventSubscriptionAttemptRepository;
     _hub = hub;
 }
コード例 #6
0
        private static async Task PublishUnprocessedEventsAsync <T>(ILogger logger,
                                                                    IIntegrationEventRepository <T> eventRepository, IMessageBroker messageBroker) where T : class, IIntegrationEvent
        {
            logger.LogDebug($"Periodic fetch of messages for type: {typeof(T).FullName}");
            foreach (var @event in await eventRepository.GetAllAsync())
            {
                var eventId = $"{@event}:{@event.Id}";
                try
                {
                    logger.LogDebug($"Trying to publish: {eventId}");
                    await messageBroker.PublishAsync(@event);

                    logger.LogDebug($"Event published: {eventId}");
                    await eventRepository.RemoveAsync(@event);

                    logger.LogDebug($"Removed from store: {eventId}");
                }
                catch (Exception exception)
                {
                    logger.LogError($"Failed to publish: {eventId}. Details: {exception.Message}");
                }
            }
        }