private void SubscribeForOrderStatusUpdate() { var connectionFactory = new ConnectionFactory() { UserName = _username, Password = _password, HostName = _hostname }; var connection = connectionFactory.CreateConnection(); var channel = connection.CreateModel(); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body); // 1. Get the message OrderStatusMessageDTO orderStatus = JsonConvert.DeserializeObject <OrderStatusMessageDTO>(message); // 2. Update order status _orderService.UpdateOrderStatusWithExternalId(orderStatus); }; channel.BasicConsume(queue: _orderStatusQueueName, autoAck: true, consumer: consumer); }
public void UpdateOrderStatusWithExternalId(OrderStatusMessageDTO orderStatus) { var existingOrder = _unitOfWork.OrderRepository.Get(item => item.Id == orderStatus.OrderId).FirstOrDefault(); if (existingOrder != null) { existingOrder.StatusId = Convert.ToInt32(orderStatus.OrderStatus); existingOrder.ExternalOrderId = orderStatus.RechargeOrderId; _unitOfWork.SaveChanges(); } }
private void PublishMessageForOrderStatus(OrderStatusMessageDTO message) { var connectionFactory = new ConnectionFactory() { UserName = _username, Password = _password, HostName = _hostname }; using (var connection = connectionFactory.CreateConnection()) { using (var channel = connection.CreateModel()) { var properties = channel.CreateBasicProperties(); properties.Persistent = false; byte[] messagebuffer = Encoding.Default.GetBytes(JsonConvert.SerializeObject(message)); channel.BasicPublish(_exchangeName, _orderStatusRoutingKey, properties, messagebuffer); } } }