public async Task WhenMessageIsLockedByAnotherHandler_MessageWillBeLeftInTheQueue()
        {
            var messageLock = new FakeMessageLock(false);

            var testResolver = new InMemoryServiceResolver(sc => sc
                .AddLogging(l =>
                    l.AddXUnit(_outputHelper))
                .AddSingleton<IMessageLockAsync>(messageLock));

            var monitor = new TrackingLoggingMonitor(LoggerFactory.Create(lf => lf.AddXUnit()).CreateLogger<TrackingLoggingMonitor>());
            var handler = new InspectableHandler<OrderAccepted>();

            var middleware = new HandlerMiddlewareBuilder(testResolver, testResolver)
                .UseExactlyOnce<OrderAccepted>(nameof(InspectableHandler<OrderAccepted>),
                    TimeSpan.FromSeconds(1))
                .UseHandler(ctx => handler)
                .Build();

            var context = TestHandleContexts.From<OrderAccepted>();

            var result = await middleware.RunAsync(context, null, CancellationToken.None);

            handler.ReceivedMessages.ShouldBeEmpty();
            result.ShouldBeFalse();
        }
        protected override void Given()
        {
            Handler = new ExactlyOnceHandler();

            _queue = CreateSuccessfulTestQueue("TestQueue", new TestMessage());

            Queues.Add(_queue);

            MessageLock = new FakeMessageLock();
        }
        protected override void Given()
        {
            _queue = CreateSuccessfulTestQueue(Guid.NewGuid().ToString(), new TestMessage());

            Queues.Add(_queue);

            MessageLock = new FakeMessageLock();

            _handler = new ExactlyOnceSignallingHandler();
            Handler  = _handler;
        }
コード例 #4
0
    protected override void Given()
    {
        _queue = CreateSuccessfulTestQueue(Guid.NewGuid().ToString(), new TestMessage());
        Queues.Add(_queue);
        _messageLock = new FakeMessageLock();

        var serviceResolver = new InMemoryServiceResolver(sc =>
                                                          sc.AddSingleton <IMessageLockAsync>(_messageLock)
                                                          .AddSingleton <IHandlerAsync <SimpleMessage> >(Handler)
                                                          .AddLogging(x => x.AddXUnit(OutputHelper)));

        var middlewareBuilder = new HandlerMiddlewareBuilder(serviceResolver, serviceResolver);

        var middleware = middlewareBuilder.Configure(pipe =>
        {
            pipe.UseExactlyOnce <SimpleMessage>("a-unique-lock-key");
            pipe.UseHandler <SimpleMessage>();
        }).Build();

        Middleware = middleware;
    }