/// <summary> /// Pushes a message to a queue /// </summary> public async Task <HorseResult> PushJson(string queue, object jsonObject, string messageId, bool waitAcknowledge, IEnumerable <KeyValuePair <string, string> > messageHeaders = null) { TypeDeliveryDescriptor descriptor = _client.DeliveryContainer.GetDescriptor(jsonObject.GetType()); HorseMessage message = descriptor.CreateMessage(MessageType.QueueMessage, queue, 0); if (!string.IsNullOrEmpty(messageId)) { message.SetMessageId(messageId); } message.WaitResponse = waitAcknowledge; if (messageHeaders != null) { foreach (KeyValuePair <string, string> pair in messageHeaders) { message.AddHeader(pair.Key, pair.Value); } } message.Serialize(jsonObject, _client.JsonSerializer); if (string.IsNullOrEmpty(message.MessageId) && waitAcknowledge) { message.SetMessageId(_client.UniqueIdGenerator.Create()); } return(await _client.WaitResponse(message, waitAcknowledge)); }
/// <summary> /// Sends a JSON message by full name /// </summary> public async Task <HorseResult> SendJson <T>(T model, bool waitAcknowledge, IEnumerable <KeyValuePair <string, string> > messageHeaders = null) { TypeDeliveryDescriptor descriptor = _client.DeliveryContainer.GetDescriptor(model.GetType()); HorseMessage message = descriptor.CreateMessage(MessageType.DirectMessage, null, null); if (string.IsNullOrEmpty(message.Target)) { return(new HorseResult(HorseResultCode.SendError)); } message.WaitResponse = waitAcknowledge; message.Serialize(model, _client.JsonSerializer); if (messageHeaders != null) { foreach (KeyValuePair <string, string> pair in messageHeaders) { message.AddHeader(pair.Key, pair.Value); } } if (waitAcknowledge) { return(await _client.SendAndGetAck(message)); } return(await _client.SendAsync(message)); }
/// <summary> /// Sends a request to target with a JSON model, waits response /// </summary> public async Task <HorseResult <TResponse> > RequestJson <TResponse>(string target, ushort?contentType, object model, IEnumerable <KeyValuePair <string, string> > messageHeaders = null) { TypeDeliveryDescriptor descriptor = _client.DeliveryContainer.GetDescriptor(model.GetType()); HorseMessage message = descriptor.CreateMessage(MessageType.DirectMessage, target, contentType); message.Serialize(model, _client.JsonSerializer); if (messageHeaders != null) { foreach (KeyValuePair <string, string> pair in messageHeaders) { message.AddHeader(pair.Key, pair.Value); } } HorseMessage responseMessage = await _client.Request(message); if (responseMessage.ContentType == 0) { TResponse response = responseMessage.Deserialize <TResponse>(_client.JsonSerializer); return(new HorseResult <TResponse>(response, message, HorseResultCode.Ok)); } return(new HorseResult <TResponse>(default, responseMessage, (HorseResultCode)responseMessage.ContentType));
/// <summary> /// Publishes a JSON object to a router /// </summary> public async Task <HorseResult> PublishJson(string routerName, object model, string messageId = null, bool waitForAcknowledge = false, ushort?contentType = null, IEnumerable <KeyValuePair <string, string> > messageHeaders = null) { TypeDeliveryDescriptor descriptor = _client.DeliveryContainer.GetDescriptor(model.GetType()); HorseMessage message = descriptor.CreateMessage(MessageType.Router, routerName, contentType); if (!string.IsNullOrEmpty(messageId)) { message.SetMessageId(messageId); } else { message.SetMessageId(_client.UniqueIdGenerator.Create()); } message.WaitResponse = waitForAcknowledge; message.Serialize(model, _client.JsonSerializer); if (messageHeaders != null) { foreach (KeyValuePair <string, string> pair in messageHeaders) { message.AddHeader(pair.Key, pair.Value); } } return(await _client.WaitResponse(message, waitForAcknowledge)); }