public WebhookInvoker(ISchemaWebhookRepository webhookRepository, JsonSerializer webhookSerializer, ISemanticLog log, TypeNameRegistry typeNameRegistry) { Guard.NotNull(webhookRepository, nameof(webhookRepository)); Guard.NotNull(webhookSerializer, nameof(webhookSerializer)); Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry)); Guard.NotNull(log, nameof(log)); this.webhookRepository = webhookRepository; this.webhookSerializer = webhookSerializer; this.log = log; this.typeNameRegistry = typeNameRegistry; invokeBlock = new TransformBlock <InvocationRequest, InvocationResponse>(x => DispatchEventAsync(x), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 1, BoundedCapacity = 8 }); dumpBlock = new ActionBlock <InvocationResponse>(DumpAsync, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 32, BoundedCapacity = 64 }); invokeBlock.LinkTo(dumpBlock, new DataflowLinkOptions { PropagateCompletion = true }, x => x != null); }
public WebhooksController(ICommandBus commandBus, ISchemaWebhookRepository webhooksRepository, IWebhookEventRepository webhookEventsRepository) : base(commandBus) { this.webhooksRepository = webhooksRepository; this.webhookEventsRepository = webhookEventsRepository; }
public WebhookEnqueuer(TypeNameRegistry typeNameRegistry, IWebhookEventRepository webhookEventRepository, ISchemaWebhookRepository webhookRepository, IClock clock, JsonSerializer webhookSerializer) { Guard.NotNull(webhookEventRepository, nameof(webhookEventRepository)); Guard.NotNull(webhookSerializer, nameof(webhookSerializer)); Guard.NotNull(webhookRepository, nameof(webhookRepository)); Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry)); Guard.NotNull(clock, nameof(clock)); this.webhookEventRepository = webhookEventRepository; this.webhookSerializer = webhookSerializer; this.webhookRepository = webhookRepository; this.clock = clock; this.typeNameRegistry = typeNameRegistry; }
public WebhookDequeuer(WebhookSender webhookSender, IWebhookEventRepository webhookEventRepository, ISchemaWebhookRepository webhookRepository, IClock clock, ISemanticLog log) { Guard.NotNull(webhookEventRepository, nameof(webhookEventRepository)); Guard.NotNull(webhookRepository, nameof(webhookRepository)); Guard.NotNull(webhookSender, nameof(webhookSender)); Guard.NotNull(clock, nameof(clock)); Guard.NotNull(log, nameof(log)); this.webhookEventRepository = webhookEventRepository; this.webhookRepository = webhookRepository; this.webhookSender = webhookSender; this.clock = clock; this.log = log; requestBlock = new ActionBlock <IWebhookEventEntity>(MakeRequestAsync, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 32, BoundedCapacity = 32 }); blockBlock = new TransformBlock <IWebhookEventEntity, IWebhookEventEntity>(x => BlockAsync(x), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 1, BoundedCapacity = 1 }); blockBlock.LinkTo(requestBlock, new DataflowLinkOptions { PropagateCompletion = true }); timer = new CompletionTimer(5000, QueryAsync); }