Пример #1
0
        public static IBus CreateBus()
        {
            var connectionFactory = new InMemoryConnectionFactory();

            var serializer = new JsonSerializer();
            var logger = new ConsoleLogger();
            var conventions = new Conventions();
            var consumerErrorStrategy = new DefaultConsumerErrorStrategy(connectionFactory, serializer, logger, conventions);

            var advancedBus = new RabbitAdvancedBus(
                new ConnectionConfiguration(),
                connectionFactory,
                TypeNameSerializer.Serialize,
                serializer,
                new QueueingConsumerFactory(logger, consumerErrorStrategy),
                logger,
                CorrelationIdGenerator.GetCorrelationId,
                conventions);

            return new RabbitBus(
                TypeNameSerializer.Serialize,
                logger,
                conventions,
                advancedBus);
        }
Пример #2
0
        public void SetUp()
        {
            var connectionFactory = new ConnectionFactoryWrapper(new ConnectionFactory
            {
                HostName = "localhost",
                VirtualHost = "/",
                UserName = "******",
                Password = "******"
            });

            var serializer = new JsonSerializer();
            var logger = new ConsoleLogger();
            var consumerErrorStrategy = new DefaultConsumerErrorStrategy(connectionFactory, serializer, logger);
            var conventions = new Conventions();

            advancedBus = new RabbitAdvancedBus(
                connectionFactory,
                TypeNameSerializer.Serialize,
                serializer,
                new QueueingConsumerFactory(logger, consumerErrorStrategy),
                logger,
                CorrelationIdGenerator.GetCorrelationId,
                conventions);

            while (!advancedBus.IsConnected)
            {
                Thread.Sleep(10);
            }
        }
 public void SetUp()
 {
     connectionFactory = new ConnectionFactoryWrapper(new ConnectionFactory
     {
         HostName = "localhost",
         UserName = "******",
         Password = "******"
     });
     serializer = new JsonSerializer();
     consumerErrorStrategy = new DefaultConsumerErrorStrategy(connectionFactory, serializer, new ConsoleLogger());
 }
 public void SetUp()
 {
     connectionFactory = new ConnectionFactoryWrapper(new ConnectionConfiguration
     {
         Hosts = new List<IHostConfiguration>
         {
             new HostConfiguration { Host = "localhost", Port = 5672 }
         },
         UserName = "******",
         Password = "******"
     }, new DefaultClusterHostSelectionStrategy<ConnectionFactoryInfo>());
     serializer = new JsonSerializer();
     consumerErrorStrategy = new DefaultConsumerErrorStrategy(connectionFactory, serializer, new ConsoleLogger());
 }
Пример #5
0
        public void SetUp()
        {
            var customConventions = new Conventions(new TypeNameSerializer())
            {
                ErrorQueueNamingConvention    = () => "CustomEasyNetQErrorQueueName",
                ErrorExchangeNamingConvention = info => "CustomErrorExchangePrefixName." + info.RoutingKey
            };

            mockBuilder = new MockBuilder();

            errorStrategy = new DefaultConsumerErrorStrategy(
                mockBuilder.ConnectionFactory,
                new JsonSerializer(new TypeNameSerializer()),
                MockRepository.GenerateStub <IEasyNetQLogger>(),
                customConventions,
                new TypeNameSerializer());

            const string originalMessage     = "";
            var          originalMessageBody = Encoding.UTF8.GetBytes(originalMessage);

            var context = new ConsumerExecutionContext(
                (bytes, properties, arg3) => null,
                new MessageReceivedInfo("consumerTag", 0, false, "orginalExchange", "originalRoutingKey", "queue"),
                new MessageProperties
            {
                CorrelationId = string.Empty,
                AppId         = string.Empty
            },
                originalMessageBody,
                MockRepository.GenerateStub <IBasicConsumer>()
                );

            try
            {
                errorAckStrategy  = errorStrategy.HandleConsumerError(context, new Exception());
                cancelAckStrategy = errorStrategy.HandleConsumerCancelled(context);
            }
            catch (Exception)
            {
                // swallow
            }
        }
Пример #6
0
        public void SetUp()
        {
            var configuration = new ConnectionConfiguration
            {
                Hosts = new List <IHostConfiguration>
                {
                    new HostConfiguration {
                        Host = "localhost", Port = 5672
                    }
                },
                UserName = "******",
                Password = "******"
            };

            configuration.Validate();

            connectionFactory     = new ConnectionFactoryWrapper(configuration, new DefaultClusterHostSelectionStrategy <ConnectionFactoryInfo>());
            serializer            = new JsonSerializer();
            conventions           = new Conventions();
            consumerErrorStrategy = new DefaultConsumerErrorStrategy(connectionFactory, serializer, new ConsoleLogger(), conventions);
        }
Пример #7
0
        public void SetUp()
        {
            var customConventions = new Conventions
            {
                ErrorQueueNamingConvention    = () => "CustomEasyNetQErrorQueueName",
                ErrorExchangeNamingConvention = originalRoutingKey => "CustomErrorExchangePrefixName." + originalRoutingKey
            };

            mockBuilder = new MockBuilder();

            errorStrategy = new DefaultConsumerErrorStrategy(
                mockBuilder.ConnectionFactory,
                new JsonSerializer(),
                MockRepository.GenerateStub <IEasyNetQLogger>(),
                customConventions);

            const string originalMessage     = "";
            var          originalMessageBody = Encoding.UTF8.GetBytes(originalMessage);

            var deliverArgs = new BasicDeliverEventArgs
            {
                RoutingKey      = "originalRoutingKey",
                Exchange        = "orginalExchange",
                Body            = originalMessageBody,
                BasicProperties = new BasicProperties
                {
                    CorrelationId = string.Empty,
                    AppId         = string.Empty
                }
            };

            try
            {
                errorStrategy.HandleConsumerError(deliverArgs, new Exception());
            }
            catch (Exception)
            {
                // swallow
            }
        }
Пример #8
0
        public void Should_not_reconnect_if_has_been_disposed()
        {
            const string originalMessage     = "{ Text:\"Hello World\"}";
            var          originalMessageBody = Encoding.UTF8.GetBytes(originalMessage);

            var exception = new Exception("I just threw!");

            var context = new ConsumerExecutionContext(
                (bytes, properties, arg3) => null,
                new MessageReceivedInfo("consumertag", 0, false, "orginalExchange", "originalRoutingKey", "queue"),
                new MessageProperties
            {
                CorrelationId = "123",
                AppId         = "456"
            },
                originalMessageBody,
                Substitute.For <IBasicConsumer>()
                );

            var logger = Substitute.For <IEasyNetQLogger>();

            connectionFactory = Substitute.For <IConnectionFactory>();

            consumerErrorStrategy = new DefaultConsumerErrorStrategy(
                connectionFactory,
                Substitute.For <ISerializer>(),
                logger,
                Substitute.For <IConventions>(),
                Substitute.For <ITypeNameSerializer>(),
                Substitute.For <IErrorMessageSerializer>());

            consumerErrorStrategy.Dispose();

            var ackStrategy = consumerErrorStrategy.HandleConsumerError(context, exception);

            connectionFactory.DidNotReceive().CreateConnection();
            logger.Received().ErrorWrite(Arg.Is <string>(x => x.Contains("DefaultConsumerErrorStrategy was already disposed")), Arg.Any <object[]>());

            Assert.Equal(AckStrategies.NackWithRequeue, ackStrategy);
        }
        public void Should_not_reconnect_if_has_been_disposed()
        {
            const string originalMessage     = "{ Text:\"Hello World\"}";
            var          originalMessageBody = Encoding.UTF8.GetBytes(originalMessage);

            var exception = new Exception("I just threw!");

            var context = new ConsumerExecutionContext(
                (bytes, properties, arg3) => null,
                new MessageReceivedInfo("consumertag", 0, false, "orginalExchange", "originalRoutingKey", "queue"),
                new MessageProperties
            {
                CorrelationId = "123",
                AppId         = "456"
            },
                originalMessageBody,
                MockRepository.GenerateStub <IBasicConsumer>()
                );

            var logger = MockRepository.GenerateMock <IEasyNetQLogger>();

            connectionFactory = MockRepository.GenerateMock <IConnectionFactory>();

            consumerErrorStrategy = new DefaultConsumerErrorStrategy(
                connectionFactory,
                MockRepository.GenerateStub <ISerializer>(),
                logger,
                MockRepository.GenerateStub <IConventions>(),
                MockRepository.GenerateStub <ITypeNameSerializer>(),
                MockRepository.GenerateStub <IErrorMessageSerializer>());

            consumerErrorStrategy.Dispose();

            var ackStrategy = consumerErrorStrategy.HandleConsumerError(context, exception);

            connectionFactory.AssertWasNotCalled(f => f.CreateConnection());
            logger.AssertWasCalled(l => l.ErrorWrite(Arg.Text.Contains("DefaultConsumerErrorStrategy was already disposed"), Arg <Object> .Is.Anything));

            Assert.AreEqual(AckStrategies.NackWithRequeue, ackStrategy);
        }
Пример #10
0
        public void SetUp()
        {
            var mockModel = new MockModel
                                {
                                    ExchangeDeclareAction = (exchangeName, type, durable, autoDelete, arguments) => createdExchangeName = exchangeName,
                                    QueueDeclareAction = (queue, durable, exclusive, autoDelete, arguments) =>
                                                             {
                                                                 createdQueueName = queue;
                                                                 return new QueueDeclareOk(queue, 0, 0);
                                                             }
                                };

            var customConventions = new Conventions
                                        {
                                            ErrorQueueNamingConvention = () => "CustomEasyNetQErrorQueueName",
                                            ErrorExchangeNamingConvention = (originalRoutingKey) => "CustomErrorExchangePrefixName." + originalRoutingKey
                                        };

            errorStrategy = new DefaultConsumerErrorStrategy(new MockConnectionFactory(new MockConnection(mockModel)), new JsonSerializer(), new MockLogger(), customConventions);

            const string originalMessage = "";
            var originalMessageBody = Encoding.UTF8.GetBytes(originalMessage);

            var deliverArgs = new BasicDeliverEventArgs
            {
                RoutingKey = "originalRoutingKey",
                Exchange = "orginalExchange",
                Body = originalMessageBody,
                BasicProperties = new BasicProperties
                {
                    CorrelationId = string.Empty,
                    AppId = string.Empty
                }
            };

            try
            {
                errorStrategy.HandleConsumerError(deliverArgs, new Exception());
            }
            catch (Exception exc)
            {
                // swallow
            }
        }