public void PublishMessage(RabbitMessage message) { var queueMessage = message.Copy(); queueMessage.Queue = this.Name; this.Messages.Enqueue(queueMessage); MessagePublished(this, queueMessage); }
public void PublishMessage(RabbitMessage message) { this.Messages.Enqueue(message); if (string.IsNullOrWhiteSpace(message.RoutingKey)) { foreach (var binding in Bindings) { binding.Value.Queue.PublishMessage(message); } } else { var matchingBindings = Bindings .Values .Where(b => b.RoutingKey == message.RoutingKey); foreach (var binding in matchingBindings) { binding.Queue.PublishMessage(message); } } }
public void BasicPublish(string exchange, string routingKey, bool mandatory, bool immediate, IBasicProperties basicProperties,byte[] body) { var parameters = new RabbitMessage { Exchange = exchange, RoutingKey = routingKey, Mandatory = mandatory, Immediate = immediate, BasicProperties = basicProperties, Body = body }; Func<string, Exchange> addExchange = s => { var newExchange = new Exchange { Name = exchange, Arguments = null, AutoDelete = false, IsDurable = false, Type = "direct" }; newExchange.PublishMessage(parameters); return newExchange; }; Func<string, Exchange, Exchange> updateExchange = (s, existingExchange) => { existingExchange.PublishMessage(parameters); return existingExchange; }; _server.Exchanges.AddOrUpdate(exchange, addExchange, updateExchange); NextPublishSeqNo++; }
private void NotifyConsumerOfMessage(string consumerTag, IBasicConsumer consumer, RabbitMessage message) { Interlocked.Increment(ref _lastDeliveryTag); var deliveryTag = Convert.ToUInt64(_lastDeliveryTag); const bool redelivered = false; var exchange = message.Exchange; var routingKey = message.RoutingKey; var basicProperties = message.BasicProperties ?? CreateBasicProperties(); var body = message.Body; consumer.HandleBasicDeliver(consumerTag, deliveryTag, redelivered, exchange, routingKey, basicProperties, body); }