public void SetUp()
        {
            postAckCallbackWasRun = false;

            //var logger = new ConsoleLogger();
            var logger = MockRepository.GenerateStub<IEasyNetQLogger>();
            var consumerErrorStrategy = MockRepository.GenerateStub<IConsumerErrorStrategy>();

            handlerRunner = new HandlerRunner(logger, consumerErrorStrategy);

            Func<byte[], MessageProperties, MessageReceivedInfo, Task> userHandler = (body, properties, info) =>
                Task.Factory.StartNew(() =>
                    {
                        deliveredBody = body;
                        deliveredProperties = properties;
                        deliveredInfo = info;
                    });

            var consumer = MockRepository.GenerateStub<IBasicConsumer>();
            channel = MockRepository.GenerateStub<IModel>();
            consumer.Stub(x => x.Model).Return(channel).Repeat.Any();

            var context = new ConsumerExecutionContext(
                userHandler, messageInfo, messageProperties, messageBody, consumer);

            context.SetPostAckCallback(() => postAckCallbackWasRun = true);

            var autoResetEvent = new AutoResetEvent(false);
            ((HandlerRunner) handlerRunner).SynchronisationAction = () => autoResetEvent.Set();

            handlerRunner.InvokeUserMessageHandler(context);

            autoResetEvent.WaitOne(1000);
        }
        public void SetUp()
        {
            //var logger = new ConsoleLogger();
            var logger = MockRepository.GenerateStub <IEasyNetQLogger>();
            var consumerErrorStrategy = MockRepository.GenerateStub <IConsumerErrorStrategy>();
            var eventBus = new EventBus();

            handlerRunner = new HandlerRunner(logger, consumerErrorStrategy, eventBus);

            Func <byte[], MessageProperties, MessageReceivedInfo, Task> userHandler = (body, properties, info) =>
                                                                                      Task.Factory.StartNew(() =>
            {
                deliveredBody       = body;
                deliveredProperties = properties;
                deliveredInfo       = info;
            });

            var consumer = MockRepository.GenerateStub <IBasicConsumer>();

            channel = MockRepository.GenerateStub <IModel>();
            consumer.Stub(x => x.Model).Return(channel).Repeat.Any();

            var context = new ConsumerExecutionContext(
                userHandler, messageInfo, messageProperties, messageBody, consumer);

            var autoResetEvent = new AutoResetEvent(false);

            eventBus.Subscribe <AckEvent>(x => autoResetEvent.Set());

            handlerRunner.InvokeUserMessageHandler(context);

            autoResetEvent.WaitOne(1000);
        }
Beispiel #3
0
 public InternalConsumer(
     IHandlerRunner handlerRunner,
     IConsumerDispatcher consumerDispatcher)
 {
     this.handlerRunner      = handlerRunner;
     this.consumerDispatcher = consumerDispatcher;
 }
Beispiel #4
0
        public When_a_user_handler_is_executed()
        {
            var consumerErrorStrategy = Substitute.For <IConsumerErrorStrategy>();
            var eventBus = new EventBus();

            handlerRunner = new HandlerRunner(consumerErrorStrategy, eventBus);

            Func <byte[], MessageProperties, MessageReceivedInfo, Task> userHandler = (body, properties, info) =>
                                                                                      Task.Factory.StartNew(() =>
            {
                deliveredBody       = body;
                deliveredProperties = properties;
                deliveredInfo       = info;
            });

            var consumer = Substitute.For <IBasicConsumer>();

            channel = Substitute.For <IModel>();
            consumer.Model.Returns(channel);

            var context = new ConsumerExecutionContext(
                userHandler, messageInfo, messageProperties, messageBody, consumer);

            var autoResetEvent = new AutoResetEvent(false);

            eventBus.Subscribe <AckEvent>(x => autoResetEvent.Set());

            handlerRunner.InvokeUserMessageHandler(context);

            autoResetEvent.WaitOne(1000);
        }
Beispiel #5
0
 public InternalConsumerFactory(
     IHandlerRunner handlerRunner,
     IConsumerDispatcherFactory consumerDispatcherFactory)
 {
     this.handlerRunner             = handlerRunner;
     this.consumerDispatcherFactory = consumerDispatcherFactory;
 }
        public void SetUp()
        {
            //var logger = new ConsoleLogger();
            var logger = MockRepository.GenerateStub<IEasyNetQLogger>();
            var consumerErrorStrategy = MockRepository.GenerateStub<IConsumerErrorStrategy>();
            var eventBus = new EventBus();

            handlerRunner = new HandlerRunner(logger, consumerErrorStrategy, eventBus);

            Func<byte[], MessageProperties, MessageReceivedInfo, Task> userHandler = (body, properties, info) => 
                Task.Factory.StartNew(() =>
                    {
                        deliveredBody = body;
                        deliveredProperties = properties;
                        deliveredInfo = info;
                    });

            var consumer = MockRepository.GenerateStub<IBasicConsumer>();
            channel = MockRepository.GenerateStub<IModel>();
            consumer.Stub(x => x.Model).Return(channel).Repeat.Any();

            var context = new ConsumerExecutionContext(
                userHandler, messageInfo, messageProperties, messageBody, consumer);

            var autoResetEvent = new AutoResetEvent(false);
            eventBus.Subscribe<AckEvent>(x => autoResetEvent.Set());

            handlerRunner.InvokeUserMessageHandler(context);

            autoResetEvent.WaitOne(1000);
        }
        private static void Run(IHandlerRunner runner)
        {
            ILambdaRuntime   runtime   = new LambdaRuntime(new SystemEnvironment(), new SystemDateTime(), new HttpClient());
            ILambdaBootstrap bootstrap = new LambdaBootstrap(runtime, runner);

            bootstrap.Initialize();
            bootstrap.Run();
        }
 public BasicConsumer(Action <BasicConsumer> cancelled, IConsumerDispatcher consumerDispatcher, IQueue queue, IEventBus eventBus, IHandlerRunner handlerRunner, Func <byte[], MessageProperties, MessageReceivedInfo, Task> onMessage, IEasyNetQLogger logger, IModel model)
 {
     Queue                   = queue;
     OnMessage               = onMessage;
     this.cancelled          = cancelled;
     this.consumerDispatcher = consumerDispatcher;
     this.eventBus           = eventBus;
     this.handlerRunner      = handlerRunner;
     this.logger             = logger;
     Model                   = model;
 }
Beispiel #9
0
        public BasicConsumer(Action <BasicConsumer> cancelled, IConsumerDispatcher consumerDispatcher, IQueue queue, IEventBus eventBus, IHandlerRunner handlerRunner, Func <byte[], MessageProperties, MessageReceivedInfo, Task> onMessage, IModel model)
        {
            Preconditions.CheckNotNull(onMessage, "onMessage");

            Queue                   = queue;
            OnMessage               = onMessage;
            this.cancelled          = cancelled;
            this.consumerDispatcher = consumerDispatcher;
            this.eventBus           = eventBus;
            this.handlerRunner      = handlerRunner;
            Model                   = model;
        }
Beispiel #10
0
        public InternalConsumerFactory(
            IHandlerRunner handlerRunner,
            IConventions conventions,
            IConsumerDispatcherFactory consumerDispatcherFactory,
            IEventBus eventBus)
        {
            Preconditions.CheckNotNull(handlerRunner, "handlerRunner");
            Preconditions.CheckNotNull(conventions, "conventions");
            Preconditions.CheckNotNull(consumerDispatcherFactory, "consumerDispatcherFactory");

            this.handlerRunner             = handlerRunner;
            this.conventions               = conventions;
            this.consumerDispatcherFactory = consumerDispatcherFactory;
            this.eventBus = eventBus;
        }
Beispiel #11
0
        private static void Run(IHandlerRunner runner)
        {
            // The Lambda container freezes the process at a point where an HTTP request is in progress.
            // We need to make sure we don't timeout waiting for the next invocation.
            // Reference 12 Hours from AWS Custom Runtime Support
            HttpClient httpClient = new HttpClient();

            httpClient.Timeout = TimeSpan.FromHours(12);

            ILambdaRuntime   runtime   = new LambdaRuntime(new SystemEnvironment(), new SystemDateTime(), httpClient);
            ILambdaBootstrap bootstrap = new LambdaBootstrap(runtime, runner);

            bootstrap.Initialize();
            bootstrap.Run();
        }
Beispiel #12
0
        public InternalConsumer(
            IHandlerRunner handlerRunner, 
            IEasyNetQLogger logger, 
            IConsumerDispatcher consumerDispatcher, 
            IConventions conventions, 
            IConnectionConfiguration connectionConfiguration)
        {
            Preconditions.CheckNotNull(handlerRunner, "handlerRunner");
            Preconditions.CheckNotNull(logger, "logger");
            Preconditions.CheckNotNull(consumerDispatcher, "consumerDispatcher");
            Preconditions.CheckNotNull(conventions, "conventions");
            Preconditions.CheckNotNull(connectionConfiguration, "connectionConfiguration");

            this.handlerRunner = handlerRunner;
            this.logger = logger;
            this.consumerDispatcher = consumerDispatcher;
            this.conventions = conventions;
            this.connectionConfiguration = connectionConfiguration;
        }
Beispiel #13
0
        public InternalConsumer(
            IHandlerRunner handlerRunner,
            IEasyNetQLogger logger,
            IConsumerDispatcher consumerDispatcher,
            IConventions conventions,
            IConnectionConfiguration connectionConfiguration)
        {
            Preconditions.CheckNotNull(handlerRunner, "handlerRunner");
            Preconditions.CheckNotNull(logger, "logger");
            Preconditions.CheckNotNull(consumerDispatcher, "consumerDispatcher");
            Preconditions.CheckNotNull(conventions, "conventions");
            Preconditions.CheckNotNull(connectionConfiguration, "connectionConfiguration");

            this.handlerRunner           = handlerRunner;
            this.logger                  = logger;
            this.consumerDispatcher      = consumerDispatcher;
            this.conventions             = conventions;
            this.connectionConfiguration = connectionConfiguration;
        }
Beispiel #14
0
        public InternalConsumer(
            IPersistentConnection connection,
            IHandlerRunner handlerRunner,
            IConsumerDispatcher consumerDispatcher,
            IConventions conventions,
            IEventBus eventBus
            )
        {
            Preconditions.CheckNotNull(connection, "connection");
            Preconditions.CheckNotNull(handlerRunner, "handlerRunner");
            Preconditions.CheckNotNull(consumerDispatcher, "consumerDispatcher");
            Preconditions.CheckNotNull(conventions, "conventions");
            Preconditions.CheckNotNull(eventBus, "eventBus");

            this.connection         = connection;
            this.handlerRunner      = handlerRunner;
            this.consumerDispatcher = consumerDispatcher;
            this.conventions        = conventions;
            this.eventBus           = eventBus;
        }
Beispiel #15
0
        public BasicConsumer(
            Action <BasicConsumer> cancelled,
            IConsumerDispatcher consumerDispatcher,
            IQueue queue,
            IEventBus eventBus,
            IHandlerRunner handlerRunner,
            MessageHandler onMessage,
            IModel model
            )
        {
            Preconditions.CheckNotNull(onMessage, "onMessage");

            Queue                   = queue;
            OnMessage               = onMessage;
            this.cancelled          = cancelled;
            this.consumerDispatcher = consumerDispatcher;
            this.eventBus           = eventBus;
            this.handlerRunner      = handlerRunner;
            Model                   = model;
        }
Beispiel #16
0
        public InternalConsumerFactory(
            IHandlerRunner handlerRunner,
            ILogger logger,
            IConventions conventions,
            ConnectionConfiguration connectionConfiguration,
            IConsumerDispatcherFactory consumerDispatcherFactory,
            IEventBus eventBus)
        {
            Preconditions.CheckNotNull(handlerRunner, "handlerRunner");
            Preconditions.CheckNotNull(logger, "logger");
            Preconditions.CheckNotNull(conventions, "conventions");
            Preconditions.CheckNotNull(connectionConfiguration, "connectionConfiguration");
            Preconditions.CheckNotNull(consumerDispatcherFactory, "consumerDispatcherFactory");

            this.handlerRunner             = handlerRunner;
            this.logger                    = logger;
            this.conventions               = conventions;
            this.connectionConfiguration   = connectionConfiguration;
            this.consumerDispatcherFactory = consumerDispatcherFactory;
            this.eventBus                  = eventBus;
        }
        public InternalConsumerFactory(
            IHandlerRunner handlerRunner, 
            IEasyNetQLogger logger, 
            IConventions conventions, 
            ConnectionConfiguration connectionConfiguration, 
            IConsumerDispatcherFactory consumerDispatcherFactory, 
            IEventBus eventBus)
        {
            Preconditions.CheckNotNull(handlerRunner, "handlerRunner");
            Preconditions.CheckNotNull(logger, "logger");
            Preconditions.CheckNotNull(conventions, "conventions");
            Preconditions.CheckNotNull(connectionConfiguration, "connectionConfiguration");
            Preconditions.CheckNotNull(consumerDispatcherFactory, "consumerDispatcherFactory");

            this.handlerRunner = handlerRunner;
            this.logger = logger;
            this.conventions = conventions;
            this.connectionConfiguration = connectionConfiguration;
            this.consumerDispatcherFactory = consumerDispatcherFactory;
            this.eventBus = eventBus;
        }
Beispiel #18
0
        public void SetUp()
        {
            postAckCallbackWasRun = false;

            //var logger = new ConsoleLogger();
            var logger = MockRepository.GenerateStub <IEasyNetQLogger>();
            var consumerErrorStrategy = MockRepository.GenerateStub <IConsumerErrorStrategy>();

            handlerRunner = new HandlerRunner(logger, consumerErrorStrategy);

            Func <byte[], MessageProperties, MessageReceivedInfo, Task> userHandler = (body, properties, info) =>
                                                                                      Task.Factory.StartNew(() =>
            {
                deliveredBody       = body;
                deliveredProperties = properties;
                deliveredInfo       = info;
            });

            var consumer = MockRepository.GenerateStub <IBasicConsumer>();

            channel = MockRepository.GenerateStub <IModel>();
            consumer.Stub(x => x.Model).Return(channel).Repeat.Any();

            var context = new ConsumerExecutionContext(
                userHandler, messageInfo, messageProperties, messageBody, consumer);

            context.SetPostAckCallback(() => postAckCallbackWasRun = true);

            var autoResetEvent = new AutoResetEvent(false);

            ((HandlerRunner)handlerRunner).SynchronisationAction = () => autoResetEvent.Set();

            handlerRunner.InvokeUserMessageHandler(context);

            autoResetEvent.WaitOne(1000);
        }
 public LambdaBootstrap(ILambdaRuntime runtime, IHandlerRunner runner)
 {
     _runtime = runtime;
     _runner  = runner;
 }
 public InMemoryEventBus(IHandlerRunner handlerRunner)
 {
     _handlerRunner = handlerRunner;
 }
Beispiel #21
0
 public LambdaBootstrapTests()
 {
     _runtime   = A.Fake <ILambdaRuntime>();
     _runner    = A.Fake <IHandlerRunner>();
     _bootstrap = new LambdaBootstrap(_runtime, _runner);
 }