public void PublishUserSaveFeedback(string _queueName, UserSaveFeedback publishModel, IDictionary <string, object> headers)
        {
            if (!_persistentConnection.IsConnected)
            {
                _persistentConnection.TryConnect();
            }

            using (var channel = _persistentConnection.CreateModel())
            {
                channel.QueueDeclare(queue: _queueName, durable: false, exclusive: false, autoDelete: false, arguments: null);
                var message = JsonConvert.SerializeObject(publishModel);
                var body    = Encoding.UTF8.GetBytes(message);

                IBasicProperties properties = channel.CreateBasicProperties();
                properties.Persistent   = true;
                properties.DeliveryMode = 2;
                properties.Headers      = headers;
                // properties.Expiration = "36000000";
                //properties.ContentType = "text/plain";

                channel.ConfirmSelect();
                channel.BasicPublish(exchange: "", routingKey: _queueName, mandatory: true, basicProperties: properties, body: body);
                channel.WaitForConfirmsOrDie();

                channel.BasicAcks += (sender, eventArgs) =>
                {
                    Console.WriteLine("Sent RabbitMQ");
                    //implement ack handle
                };
                channel.ConfirmSelect();
            }
        }
        private void ReceivedEvent(object sender, BasicDeliverEventArgs e)
        {
            if (e.RoutingKey == "userInsertMsgQ")
            {
                var              message      = Encoding.UTF8.GetString(e.Body);
                List <User>      userList     = JsonConvert.DeserializeObject <List <User> >(message);
                UserSaveFeedback saveFeedback = _userService.InsertUsers(userList);

                PublishUserSaveFeedback("userInsertMsgQ_feedback", saveFeedback, e.BasicProperties.Headers);
            }

            if (e.RoutingKey == "emailSendMsgQ")
            {
                //Implementation here
            }
        }
Пример #3
0
        internal UserSaveFeedback InsertUsers(List <User> userList)
        {
            List <User> failList = new List <User>();

            foreach (User user in userList)
            {
                failList.Add(user);
                Thread.Sleep(1000);//fake waiting
            }

            UserSaveFeedback saveFeedback = new UserSaveFeedback();

            saveFeedback.successCount = 1;
            saveFeedback.failedCount  = 1;
            saveFeedback.failedList   = failList;//Add fake failed Items

            return(saveFeedback);
        }