public SyncronousMessageResponse Send(SyncronousMessageRequest request)
        {
            if (this.bus == null || this.busConnectionDetails == null || serviceDetails == null)
            {
                throw new ArgumentException("The sender has not been Initialized. Please call the Initialize method first.");
            }
                        
            var operation = ServiceOperationCache.Get(request.ServiceId, request.OperationId);

            var typeNameSerialzier = new TypeNameSerializer();
            Console.WriteLine("Response Type: {0}", typeNameSerialzier.Serialize(operation.ResponseType));
            Console.WriteLine("Request Type: {0}", typeNameSerialzier.Serialize(operation.RequestType));

            var message = JsonConvert.DeserializeObject(request.Message, operation.RequestType);
            var generic = this.bus.GetType().GetMethod("Request").MakeGenericMethod(operation.RequestType, operation.ResponseType);
            var result = generic.Invoke(this.bus, new[] { message });

            //var result = this.bus.Request<string, string>("hello");

            return new SyncronousMessageResponse()
            {
                Message = result,
                OperationId = request.OperationId,
                ServiceId = request.ServiceId
            };
        }
 public SyncronousMessageResponse SyncRecieve (SyncronousMessageRequest request)
 {
     Console.Write("Got Sync Message");
     IMessageSender messagesender = DependencyInjector.Container.Resolve<IMessageSender>();
     messagesender.Initialize(request.ServiceId);
     var result = messagesender.Send(request);
     return result;
 }
Beispiel #3
0
        static void Main(string[] args)
        {
            DependencyInjector.RegisterDependencies();

            using (DependencyInjector.Container.Resolve<MessageReciever>())
            {
                Console.WriteLine("Listening to messages ...");
                
                while (true)    
                {
                    Console.WriteLine("Enter 1 for Add Customer, and 2 for GetCustomer");
                    var selection = Console.ReadLine();
                    var bus = RabbitHutch.CreateBus(string.Format("host=localhost"));

                    var addCustomerMessage = new AsyncronousMessageRequest()
                    {
                        Message = testJson,
                        ServiceId = "BasicSenderTwo",
                        OperationId = "AddCustomer"
                    };

                    var getCustomerMessage = new SyncronousMessageRequest()
                    {
                        Message = customerIdentifier,
                        ServiceId = "BasicSenderTwo",
                        OperationId = "GetCustomer"
                    };

                    switch (selection)
                    {
                        case "1":
                            bus.Publish(addCustomerMessage);
                            break;
                        case "2":
                            var response = bus.Request<SyncronousMessageRequest,SyncronousMessageResponse>(getCustomerMessage);
                            Console.WriteLine(response.Message);
                            break;
                    }
                    

                    bus.Dispose();

                    Console.WriteLine("Message has been sent");
                }                
            }
        }