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 } }
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); }