Esempio n. 1
0
        public async Task AddAsync_AddsMessagesToQueue()
        {
            var mockRabbitMQService = new Mock <IRabbitMQService>(MockBehavior.Strict);
            var mockBatch           = new Mock <IBasicPublishBatch>();

            mockRabbitMQService.Setup(m => m.BasicPublishBatch).Returns(mockBatch.Object);

            var attribute = new RabbitMQAttribute
            {
                HostName  = Constants.LocalHost,
                QueueName = "queue",
            };

            var context = new RabbitMQContext
            {
                ResolvedAttribute = attribute,
                Service           = mockRabbitMQService.Object
            };

            ILoggerFactory loggerFactory = new LoggerFactory();
            ILogger        logger        = loggerFactory.CreateLogger(LogCategories.CreateTriggerCategory(Constants.RabbitMQ));
            var            collector     = new RabbitMQAsyncCollector(context, logger);

            byte[] body = Encoding.UTF8.GetBytes("hi");
            await collector.AddAsync(body);

            mockBatch.Verify(m => m.Add(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <IBasicProperties>(), body), Times.Exactly(1));
        }
Esempio n. 2
0
        public async Task <ActionResult <VenteItem> > PostVenteItem(VenteItem venteItem)
        {
            reponse = "";

            Task <IConnection> connection      = ConnexionSingleton.Connexion("localhost", "guest", "guest", new ConnectionFactory());
            RabbitMQContext    rabbitMQContext = new RabbitMQContext(connection.Result.CreateModel());
            string             message         = JsonConvert.SerializeObject(venteItem);

            rabbitMQContext.OnRecupererReponse += TraiterReponse;
            rabbitMQContext.PublierMessage(message);
            while (reponse == "")
            {
            }
            if (reponse == "Valide")
            {
                _context.ProduitItems.Add(venteItem);
                await _context.SaveChangesAsync();

                return(CreatedAtAction("GetVenteItem", new { id = venteItem.Id }, venteItem));
            }
            else
            {
                return(null);
            }
        }
Esempio n. 3
0
        public void Creates_Context_Correctly()
        {
            var options = new RabbitMQOptions {
                HostName = Constants.LocalHost, RoutingKey = "hello"
            };
            var loggerFactory      = new LoggerFactory();
            var mockServiceFactory = new Mock <IRabbitMQServiceFactory>();
            var mockNameResolver   = new Mock <INameResolver>();
            var config             = new RabbitMQExtensionConfigProvider(new OptionsWrapper <RabbitMQOptions>(options), mockNameResolver.Object, mockServiceFactory.Object, (ILoggerFactory)loggerFactory, _emptyConfig);
            var attribute          = new RabbitMQAttribute {
                HostName = "131.107.174.10", RoutingKey = "route"
            };

            var actualContext = config.CreateContext(attribute);

            RabbitMQAttribute attr = new RabbitMQAttribute
            {
                HostName   = "131.107.174.10",
                RoutingKey = "route",
            };

            RabbitMQContext expectedContext = new RabbitMQContext
            {
                ResolvedAttribute = attr,
            };

            Assert.Equal(actualContext.ResolvedAttribute.HostName, expectedContext.ResolvedAttribute.HostName);
            Assert.Equal(actualContext.ResolvedAttribute.RoutingKey, expectedContext.ResolvedAttribute.RoutingKey);
        }
Esempio n. 4
0
        public static void Main(string[] args)
        {
            var matchContext = new RabbitMQContext();

            matchContext.SetupExchanges();

            var referee = new Referee();

            new VAR();

            Console.ForegroundColor = ConsoleColor.White;
            var madrid = new Team(
                "REAL MADRID",
                new List <Player>
            {
                new Player("casillas", 1, "Iker Casillas", Position.GoalKeeper),

                new Player("varane", 2, "Varane", Position.Defender),
                new Player("pepe", 3, "Pepe", Position.Defender),
                new Player("carvajal", 15, "Carvajal", Position.Defender),
                new Player("marcelo", 12, "Marcelo", Position.Defender),

                new Player("ramos", 4, "Sergio Ramos", Position.Midfielder),
                new Player("kroos", 8, "Toni Kroos", Position.Midfielder),
                new Player("james", 10, "James Rodriguez", Position.Winger),
                new Player("isco", 23, "Isco", Position.Winger),

                new Player("bale", 11, "Gareth Bale", Position.Striker),
                new Player("cristiano", 7, "Cristiano Ronaldo", Position.Striker),
            },
                ConsoleColor.White);

            Console.ForegroundColor = ConsoleColor.Blue;
            var barcelona = new Team(
                "BARÇA",
                new List <Player>
            {
                new Player("terStegen", 1, "Marc Andre Ter Stegen", Position.GoalKeeper),

                new Player("alves", 22, "Dani Alves", Position.Defender),
                new Player("pique", 3, "Gerard Pique", Position.Defender),
                new Player("mascherano", 14, "Javier Mascherano", Position.Defender),
                new Player("alba", 18, "Jordi Alba", Position.Defender),

                new Player("busquets", 5, "Sergio Busquets", Position.Midfielder),
                new Player("xavi", 6, "Xavi Hernandez", Position.Midfielder),
                new Player("iniesta", 8, "Andres Iniesta", Position.Midfielder),

                new Player("suarez", 9, "Luis Suarez", Position.Striker),
                new Player("messi", 10, "Lionel Messi", Position.Striker),
                new Player("neymar", 11, "Neymar Jr", Position.Winger),
            },
                ConsoleColor.Blue);

            referee.StartMatch(madrid, barcelona);
        }
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

            Task <IConnection> connection = ConnexionSingleton.Connexion("localhost", "guest", "guest", new ConnectionFactory());

            rabbitMQContext = new RabbitMQContext(connection.Result.CreateModel());
            rabbitMQContext.OnConsommerMessage += TraiterReq;
            rabbitMQContext.ConsommerMessage();
        }
Esempio n. 6
0
        public RabbitMQAsyncCollector(RabbitMQContext context, ILogger logger)
        {
            _logger  = logger ?? throw new ArgumentNullException(nameof(logger));
            _context = context ?? throw new ArgumentNullException(nameof(context));
            if (_context.Service == null)
            {
                throw new ArgumentNullException("context.service");
            }

            _batch = _context.Service.GetBatch();
        }
Esempio n. 7
0
        public ConsumerService(string queueName)
        {
            _channel   = RabbitMQContext.GetModel(queueName);
            _queueName = queueName;

            _retryTime = new List <int>
            {
                1 * 1000,
                10 * 1000,
                30 * 1000
            };
        }
Esempio n. 8
0
        /// <summary>
        /// 加载rabbitmq配置
        /// 备注:无论是客户端还是服务端必须先加载配置
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static IWebHostBuilder UseRabbitMQ(this IWebHostBuilder builder, string fileName)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var fileDir = Directory.GetCurrentDirectory();

            RabbitMQContext.Configure(fileDir, fileName);
            return(builder);
        }
Esempio n. 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="exchangeType">交换机类型</param>
        /// <param name="exchangeName">交换机名称</param>
        /// <param name="queueName">对列名称</param>
        /// <param name="routingKey">路由Key</param>
        /// <param name="messageBody">消息字节流</param>
        /// <param name="isProperties">是否持久化</param>
        /// <param name="expirationTime">过期时间,以秒为单位,如“5000”为5秒</param>
        /// <param name="headers"></param>
        private void Publish(string exchangeType, string exchangeName, string routingKey, byte[] messageBody, string queueName = null, bool durable = true, string expirationTime = null, Dictionary <string, object> headers = null)
        {
            var channel = RabbitMQContext.GetModel(routingKey);

            //设置特性
            //var args = new Dictionary<string, object>
            //{
            //    {"x-message-ttl", 5000} //里面的内容自发布起五秒后被删除
            //};

            //var args = new Dictionary<string, object>
            //{
            //    { "x-expires", 5000 } //声明一个queue,queue五秒内而且未被任何形式的消费,则被删除
            //};
            channel.ExchangeDeclare(exchangeName, exchangeType, durable);
            if (!queueName.IsNullOrEmpty())
            {
                channel.QueueDeclare(queueName, true, false, false, null);
                channel.QueueBind(queueName, exchangeName, routingKey);
            }

            var properties = channel.CreateBasicProperties();

            properties.MessageId    = Guid.NewGuid().ToString("N");
            properties.DeliveryMode = durable ? (byte)2 : (byte)1;
            properties.Persistent   = durable;
            properties.Timestamp    = new AmqpTimestamp(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds());
            properties.Headers      = headers ?? new Dictionary <string, object> {
            };
            if (!expirationTime.IsNullOrEmpty())
            {
                properties.Expiration = expirationTime;
            }

            channel.BasicPublish(exchangeName, routingKey, properties, messageBody);
        }
Esempio n. 10
0
 public RabbitMQMessagesRepository(RabbitMQContext dbContext)
 {
     // factory = new ConnectionFactory() { HostName = hostname };
     _dbContext = dbContext;
 }