public void EnsureNotDuplicateAsync() { var value = new byte[] { 1, 2, 3 }; var acceptor = Substitute.For <IMessageAcceptor>(); var lastMiddleware = Substitute.For <IEventMiddleware <string> >(); var middlewarequeue = new MiddlewareQueue <string>(_settings); middlewarequeue.AddMiddleware(_deduplicationMiddleware); middlewarequeue.AddMiddleware(lastMiddleware); middlewarequeue.RunMiddlewaresAsync( new BasicDeliverEventArgs { BasicProperties = new BasicProperties(), Body = value }, null, acceptor, CancellationToken.None) .GetAwaiter().GetResult(); middlewarequeue.RunMiddlewaresAsync( new BasicDeliverEventArgs { BasicProperties = new BasicProperties(), Body = value }, null, acceptor, CancellationToken.None) .GetAwaiter().GetResult(); lastMiddleware.Received(1).ProcessAsync(Arg.Any <IEventContext <string> >()); }
public RabbitMqSubscriber( [NotNull] ILogger <RabbitMqSubscriber <TTopicModel> > logger, [NotNull] RabbitMqSubscriptionSettings settings) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _exchangeQueueName = _settings.GetQueueOrExchangeName(); _middlewareQueue = new MiddlewareQueue <TTopicModel>(settings); }
public void SuccessfulPath() { var acceptor = Substitute.For <IMessageAcceptor>(); var middlewarequeue = new MiddlewareQueue <string>(_settings); middlewarequeue.AddMiddleware(_middleware); middlewarequeue.AddMiddleware(new ActualHandlerMiddleware <string>(_ => Task.CompletedTask)); middlewarequeue.RunMiddlewaresAsync(null, null, acceptor, CancellationToken.None).GetAwaiter().GetResult(); acceptor.Received(1).Accept(); }
public void ShouldResendToNextHandlerOnError() { var acceptor = Substitute.For <IMessageAcceptor>(); var rootEventMiddlewareHandler = Substitute.For <IEventMiddleware <string> >(); var middlewarequeue = new MiddlewareQueue <string>(_settings); middlewarequeue.AddMiddleware(rootEventMiddlewareHandler); middlewarequeue.AddMiddleware(_middleware); middlewarequeue.AddMiddleware(new ActualHandlerMiddleware <string>(_ => throw new Exception())); middlewarequeue.RunMiddlewaresAsync(null, null, acceptor, CancellationToken.None).GetAwaiter().GetResult(); rootEventMiddlewareHandler.Received(1).ProcessAsync(Arg.Any <IEventContext <string> >()); }