Exemplo n.º 1
0
        public static string PushRabbitMQ(ProductConsumer data)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "Product",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    var stocData = JsonSerializer.Serialize(data);

                    //var stocData = JsonConvert.SerializeObject(data);
                    var body = Encoding.UTF8.GetBytes(stocData);

                    channel.BasicPublish(exchange: "",
                                         routingKey: "Product",
                                         basicProperties: null,
                                         body: body);
                    return($"[x] Sent Product : {data.Name}");
                }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

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

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var             body    = ea.Body.Span;
                        var             data    = Encoding.UTF8.GetString(body);
                        ProductConsumer product = JsonConvert.DeserializeObject <ProductConsumer>(data);
                        Console.WriteLine(" [x] Received {0}", product.Name + " : " + product.Price);

                        using (DenoContext context = new DenoContext())
                        {
                            if (!context.Products.Any(pro => pro.Name == product.Name && pro.Price == product.Price))
                            {
                                Products productModel = new Products();
                                productModel.Name     = product.Name;
                                productModel.Price    = product.Price;
                                productModel.IsActive = false;
                                context.Products.Add(productModel);
                                context.SaveChanges();

                                UserDetailQueue userDetail = new UserDetailQueue();
                                userDetail.ProductId = productModel.Id;
                                userDetail.UserId    = product.UserId;
                                userDetail.IsActive  = false;

                                List <TransactionHistory> listTransaction = product.TransactionList;
                                listTransaction.Add(new TransactionHistory()
                                {
                                    TableName = "Products",
                                    ID        = productModel.Id,
                                    State     = TransactionState.Pending,
                                    Step      = TransactionStep.Product,
                                    Type      = TransactionType.SqlDB
                                });
                                userDetail.TransactionList = listTransaction;

                                Console.WriteLine(PushRabbitMQ(userDetail));
                            }
                            else
                            {
                                int             productID  = context.Products.FirstOrDefault(pro => pro.Name == product.Name && pro.Price == product.Price).Id;
                                UserDetailQueue userDetail = new UserDetailQueue();
                                userDetail.ProductId = productID;
                                userDetail.UserId    = product.UserId;
                                userDetail.IsActive  = false;

                                List <TransactionHistory> listTransaction = product.TransactionList;
                                userDetail.TransactionList = listTransaction;

                                Console.WriteLine(PushRabbitMQ(userDetail));
                            }
                        }
                        //-------------------------
                    };
                    channel.BasicConsume(queue: "Product",
                                         autoAck: true,
                                         consumer: consumer);

                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

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

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body.Span;
                        var data = Encoding.UTF8.GetString(body);
                        //UserShop user = JsonConvert.DeserializeObject<UserShop>(data);
                        UserShop user = JsonSerializer.Deserialize <UserShop>(data);
                        Console.WriteLine(" [x] Received {0}", user.name + " : " + user.surname);

                        using (DenoContext context = new DenoContext())
                        {
                            if (!context.Users.Any(us => us.Name == user.name && us.Surname == user.surname))
                            {
                                Users userModel = new Users();
                                userModel.Name     = user.name;
                                userModel.Surname  = user.surname;
                                userModel.No       = user.no;
                                userModel.IsActive = false;
                                context.Users.Add(userModel);
                                context.SaveChanges();

                                ProductConsumer product = new ProductConsumer();
                                product.Name     = user.productName;
                                product.Price    = user.productPrice;
                                product.UserId   = userModel.Id;
                                product.IsActive = false;

                                List <TransactionHistory> listTransaction = new List <TransactionHistory>();
                                listTransaction.Add(new TransactionHistory()
                                {
                                    TableName = "Users",
                                    ID        = userModel.Id,
                                    State     = TransactionState.Pending,
                                    Step      = TransactionStep.User,
                                    Type      = TransactionType.SqlDB
                                });
                                product.TransactionList = listTransaction;

                                Console.WriteLine(PushRabbitMQ(product));
                            }
                            else
                            {
                                int             userID  = context.Users.FirstOrDefault(us => us.Name == user.name && us.Surname == user.surname).Id;
                                ProductConsumer product = new ProductConsumer();
                                product.Name     = user.productName;
                                product.Price    = user.productPrice;
                                product.UserId   = userID;
                                product.IsActive = false;

                                List <TransactionHistory> listTransaction = new List <TransactionHistory>();
                                product.TransactionList = listTransaction;

                                Console.WriteLine(PushRabbitMQ(product));
                            }
                        }
                        //-------------------------
                    };
                    channel.BasicConsume(queue: "User",
                                         autoAck: true,
                                         consumer: consumer);

                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
        }