public void Submit(IOrderAccepted order)
        {
            var factory = GetConnectionFactory();
            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    DeclareExchange(channel);

                    var message = JsonConvert.SerializeObject(order);
                    var body = Encoding.UTF8.GetBytes(message);

                    channel.BasicPublish(Constants.EXCHANGE_NAME, Constants.ORDER_ACCEPTED_EVENT, null, body);
                    Console.WriteLine(" [x] Sent '{0}':'{1}'", Constants.ORDER_ACCEPTED_EVENT, message);
                }
            }
        }
        private static void ProcessEvent(IOrderAccepted orderEvent, IModel channel)
        {
            Console.Write("\tProcessing order {0}...", orderEvent.OrderId);

            ICustomerBilled billedEvent = new CustomerBilledEvent(orderEvent.OrderId);
            Thread.Sleep(5000);
            var message = JsonConvert.SerializeObject(billedEvent);
            var body = Encoding.UTF8.GetBytes(message);
            channel.BasicPublish(Constants.EXCHANGE_NAME, Constants.CUSTOMER_BILLED_EVENT, null, body);
            //Console.WriteLine(" [<<<<<<<<<<] Customer Billed '{0}':'{1}'", Constants.CUSTOMER_BILLED_EVENT, orderEvent.OrderId);
            Console.WriteLine("Done");
        }