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