public void Send(RabbitExchange rabbitExchange, RabbitTransportMessage message) { using (var channel = _rabbitChannelManager.GetChannel()) { channel.ExchangeDeclare(rabbitExchange); var props = channel.CreateBasicProperties(); if (message.Headers != null && message.Headers.Count > 0) { props.Headers = message.Headers.ToDictionary(h => h.Key, h => (object)h.Value); } channel.BasicPublish(rabbitExchange.ExchangeName, "", props, message.BodyBytes); } }
public void Send(RabbitQueue rabbitQueue, RabbitTransportMessage message) { using (var channel = _rabbitChannelManager.GetChannel()) { channel.QueueDeclare(rabbitQueue); var props = channel.CreateBasicProperties(); if (message.Headers != null && message.Headers.Count > 0) { props.Headers = message.Headers; } channel.BasicPublish("", rabbitQueue.QueueName, props, message.BodyBytes); } }
public async Task <byte[]> CallAsync(RabbitTransportMessage message) { var tcs = new TaskCompletionSource <byte[]>(); var correlationId = Guid.NewGuid().ToString(); var cts = new CancellationTokenSource(_timeout); cts.Token.Register(() => tcs.TrySetException(new TimeoutException(string.Format( "Request timeout on {0}. {1} response not recieved in {2} ms!", correlationId, Encoding.UTF8.GetString(message.BodyBytes), _timeout.TotalMilliseconds ))), false); _pendingMessages.TryAdd(correlationId, tcs); var props = _channel.CreateBasicProperties(); props.ReplyTo = _replyQueue.QueueName; props.CorrelationId = correlationId; _channel.BasicPublish( exchange: "", routingKey: _requestQueue.QueueName, basicProperties: props, body: message.BodyBytes); return(await tcs.Task); }