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);
     }
 }
Exemple #3
0
        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);
        }