private void SubscribeForMobileRechargeUpdates() { 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 MobileRechargeMessageDTO messageDTO = JsonConvert.DeserializeObject <MobileRechargeMessageDTO>(message); // 2. Do the recharge _mobileRechargeService.DoRecharge(new RechargeRequestDTO { ProviderId = messageDTO.RechargeProviderId, Amount = messageDTO.RechargeAmount }, out int rechargeOrderId); PublishMessageForOrderStatus(new OrderStatusMessageDTO { OrderId = messageDTO.OrderId, RechargeOrderId = rechargeOrderId, OrderStatus = OrderStatus.Success }); }; channel.BasicConsume(queue: _mobileRechargeQueueName, autoAck: true, consumer: consumer); }
public void PublishMessageForMobileRecharge(int orderId, int rechargeAmount, int rechargeProviderId) { 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; MobileRechargeMessageDTO message = new MobileRechargeMessageDTO { OrderId = orderId, RechargeAmount = rechargeAmount, RechargeProviderId = rechargeProviderId }; byte[] messagebuffer = Encoding.Default.GetBytes(JsonConvert.SerializeObject(message)); channel.BasicPublish(_exchangeName, _mobileRechargeRoutingKey, properties, messagebuffer); } } }