Ejemplo n.º 1
0
        public static IApplicationBuilder UseRabbitListener(this IApplicationBuilder application)
        {
            Listener = application.ApplicationServices.GetRequiredService <RabbitMQQueueConnection>();

            var liftime = application.ApplicationServices.GetRequiredService <Microsoft.AspNetCore.Hosting.IApplicationLifetime>();

            liftime.ApplicationStarted.Register(OnStarted);
            liftime.ApplicationStopping.Register(OnStopping);

            return(application);
        }
Ejemplo n.º 2
0
        public static IApplicationBuilder UseRabbitListener(this IApplicationBuilder application)

        {
            Listener = application.ApplicationServices.GetService <RabbitMQQueueConnection>();

            var lifetime = application.ApplicationServices.GetService <IHostApplicationLifetime>();

            lifetime.ApplicationStarted.Register(OnStarted);
            lifetime.ApplicationStopping.Register(OnStoped);
            return(application);
        }
        public void BasicPublishReturnsWhenBasicAcksReceivedTest()
        {
            var connFactory = Substitute.For<IConnectionFactory>();
            var mockConn = Substitute.For<IConnection>();
            var model = Substitute.For<IModel>();
            model.WhenForAnyArgs(x => x.BasicPublish(null, null, false, null, null)).Do(c => model.BasicAcks += Raise.EventWith<BasicAckEventArgs>());
            connFactory.CreateConnection().Returns(mockConn);
            connFactory.CreateConnection(string.Empty).ReturnsForAnyArgs(mockConn);
            mockConn.CreateModel().Returns(model);

            var queueName = Guid.NewGuid().ToString();

            var conn = new RabbitMQQueueConnection(connFactory, queueName, false);
            conn.BasicPublish(Constants.DefaultExchange, queueName, null, new MemoryStream(), TimeSpan.FromSeconds(5), CancellationToken.None);
        }
        public void RabbitMQCoonnectivityTest()
        {
            var clientFactory = new ConnectionFactory()
            {
                HostName = "localhost",
                UserName = "******",
                Password = "******",
                Port     = 5672,
            };
            var message = new ChooserLbMessage()
            {
                //IDNP = "512412412312",
                IDVN         = "1241231231",
                PartyChoosed = 3,
                Vote_date    = DateTime.Now
            };


            var connection = clientFactory.CreateConnection();

            using (var channel = connection.CreateModel())
            {
                channel.QueueDeclare(queue: "voteDataMsg", durable: false, exclusive: false, autoDelete: false, arguments: null);


                string messageSerialized = JsonConvert.SerializeObject(message);
                var    body = Encoding.UTF8.GetBytes(messageSerialized);

                channel.BasicPublish(exchange: "", routingKey: "voteDataMsg", basicProperties: null,
                                     body: body);
            }


            var receive_connection = new RabbitMQQueueConnection(clientFactory);

            receive_connection.InitReceiverChannel();


            Assert.IsTrue(receive_connection.IsConnected);
        }
        public void BasicPublishThrowsWhenBasicAcksNotReceivedTest()
        {
            var connFactory = Substitute.For<IConnectionFactory>();
            var mockConn = Substitute.For<IConnection>();
            var model = Substitute.For<IModel>();
            connFactory.CreateConnection().Returns(mockConn);
            connFactory.CreateConnection(string.Empty).ReturnsForAnyArgs(mockConn);
            mockConn.CreateModel().Returns(model);

            var queueName = Guid.NewGuid().ToString();

            var conn = new RabbitMQQueueConnection(connFactory, queueName, false);
            Exception error = null;
            try
            {
                conn.BasicPublish(Constants.DefaultExchange, queueName, null, new MemoryStream(), TimeSpan.FromSeconds(5), CancellationToken.None);
            }
            catch(TimeoutException e)
            {
                error = e;
            }
            Assert.NotNull(error);
        }
        public void BasicPublishThrowsWhenBasicNacksEventRaisedTest()
        {
            var connFactory = Substitute.For<IConnectionFactory>();
            var mockConn = Substitute.For<IConnection>();
            var model = Substitute.For<IModel>();
            model.WhenForAnyArgs(x => x.BasicPublish(null, null, false, null, null)).Do(c => model.BasicNacks += Raise.EventWith<BasicNackEventArgs>());
            connFactory.CreateConnection().Returns(mockConn);
            connFactory.CreateConnection(string.Empty).ReturnsForAnyArgs(mockConn);
            mockConn.CreateModel().Returns(model);

            var queueName = Guid.NewGuid().ToString();

            var conn = new RabbitMQQueueConnection(connFactory, queueName, false);
            Exception error = null;
            try
            {
                conn.BasicPublish(Constants.DefaultExchange, queueName, null, new MemoryStream(), TimeSpan.FromSeconds(5), CancellationToken.None);
            }
            catch (MessageNotAcknowledgedByBrokerException e)
            {
                error = e;
            }
            Assert.NotNull(error);
        }
        public void ReaderIsNotClosedOnDisposedWhenSetToFalseTest()
        {
            var connFactory = Substitute.For<IConnectionFactory>();
            var mockConn = Substitute.For<IConnection>();
            var model = Substitute.For<IModel>();
            connFactory.CreateConnection().Returns(mockConn);
            connFactory.CreateConnection(string.Empty).ReturnsForAnyArgs(mockConn);
            mockConn.CreateModel().Returns(model);

            var queueName = Guid.NewGuid().ToString();

            var conn = new RabbitMQQueueConnection(connFactory, queueName, false);
            conn.EnsureConnectionOpen(TimeSpan.FromSeconds(30), CancellationToken.None);
            conn.Dispose();
            model.DidNotReceiveWithAnyArgs().QueueDeleteNoWait(null, false, false);
        }
 public RabbitMQConnectionBaseTests(ITestOutputHelper outputHelper)
     : base(outputHelper)
 {
     var connFactory = Substitute.For<IConnectionFactory>();
     Connection = new RabbitMQQueueConnection(connFactory);
 }
        public void ExceptionsAreSuppressedWhenClosingQueueTest()
        {
            var connFactory = Substitute.For<IConnectionFactory>();
            var mockConn = Substitute.For<IConnection>();
            var model = Substitute.For<IModel>();
            model.WhenForAnyArgs(x => x.QueueDeleteNoWait(null, false, false)).Do(x => { throw new Exception(); });

            connFactory.CreateConnection().Returns(mockConn);
            connFactory.CreateConnection(string.Empty).ReturnsForAnyArgs(mockConn);
            mockConn.CreateModel().Returns(model);

            var queueName = Guid.NewGuid().ToString();

            var conn = new RabbitMQQueueConnection(connFactory, queueName, true);
            conn.EnsureConnectionOpen(TimeSpan.FromSeconds(30), CancellationToken.None);
            conn.Dispose();
        }