private IHandlerAsync <T> MaybeWrapWithExactlyOnce <T>(IHandlerAsync <T> handler) where T : Message
        {
            var handlerType         = handler.GetType();
            var exactlyOnceMetadata = new ExactlyOnceReader(handlerType);

            if (!exactlyOnceMetadata.Enabled)
            {
                return(handler);
            }

            if (_messageLock == null)
            {
                throw new Exception("IMessageLock is null. You need to specify an implementation for IMessageLock.");
            }

            var handlerName = handlerType.FullName.ToLowerInvariant();
            var timeout     = TimeSpan.FromSeconds(exactlyOnceMetadata.GetTimeOut());
            var logger      = _loggerFactory.CreateLogger <ExactlyOnceHandler <T> >();

            return(new ExactlyOnceHandler <T>(handler, _messageLock, timeout, handlerName, logger));
        }
        public void ObjectTypeDoesNotHaveExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof(object));

            reader.Enabled.ShouldBeFalse();
        }
        public void OnceTestHandlerAsyncType_HasExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof(OnceTestHandlerAsync));

            reader.Enabled.ShouldBeTrue();
        }
        public void UnadornedHandlerType_DoesNotHaveExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof(UnadornedHandlerAsync));

            reader.Enabled.ShouldBeFalse();
        }
        public void OnceTestHandlerAsyncType_HasExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof (OnceTestHandlerAsync));

            Assert.That(reader.Enabled, Is.True);
        }
        public void UnadornedHandlerType_DoesNotHaveExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof(UnadornedHandlerAsync));

            Assert.That(reader.Enabled, Is.False);
        }
        public void ObjectTypeDoesNotHaveExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof (object));

            Assert.That(reader.Enabled, Is.False);
        }
Exemplo n.º 8
0
        public void ObjectTypeDoesNotHaveExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof(object));

            Assert.That(reader.Enabled, Is.False);
        }
Exemplo n.º 9
0
        public void OnceTestHandlerAsyncType_HasExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof(OnceTestHandlerAsync));

            Assert.That(reader.Enabled, Is.True);
        }
Exemplo n.º 10
0
        public void UnadornedHandlerType_DoesNotHaveExactlyOnce()
        {
            var reader = new ExactlyOnceReader(typeof(UnadornedHandlerAsync));

            Assert.That(reader.Enabled, Is.False);
        }