private static IBasicProperties BuildProperties(IDictionary <string, object> headers, IChannelHost channelHost, byte?priority = 0, byte?deliveryMode = 2) { var props = channelHost.GetChannel().CreateBasicProperties(); props.DeliveryMode = deliveryMode ?? 2; // Default Persisted props.Priority = priority ?? 0; // Default Priority if (!props.IsHeadersPresent()) { props.Headers = new Dictionary <string, object>(); } if (headers?.Count > 0) { foreach (var kvp in headers) { if (kvp.Key.StartsWith(Utils.Constants.HeaderPrefix, StringComparison.OrdinalIgnoreCase)) { props.Headers[kvp.Key] = kvp.Value; } } } // Non-optional Header. props.Headers[Utils.Constants.HeaderForObjectType] = Utils.Constants.HeaderValueForMessage; return(props); }
private static IBasicProperties BuildProperties(Letter letter, IChannelHost channelHost, bool withHeaders) { var props = channelHost.GetChannel().CreateBasicProperties(); props.DeliveryMode = letter.Envelope.RoutingOptions.DeliveryMode; props.ContentType = letter.Envelope.RoutingOptions.MessageType; props.Priority = letter.Envelope.RoutingOptions.PriorityLevel; if (!props.IsHeadersPresent()) { props.Headers = new Dictionary <string, object>(); } if (withHeaders && letter.LetterMetadata != null) { foreach (var kvp in letter.LetterMetadata?.CustomFields) { if (kvp.Key.StartsWith(Utils.Constants.HeaderPrefix, StringComparison.OrdinalIgnoreCase)) { props.Headers[kvp.Key] = kvp.Value; } } } // Non-optional Header. props.Headers[Utils.Constants.HeaderForObjectType] = Utils.Constants.HeaderValueForLetter; return(props); }
public static IBasicProperties CreateBasicProperties( this IMessage message, IChannelHost channelHost, bool withOptionalHeaders, IMetadata metadata) { var props = channelHost.GetChannel().CreateBasicProperties(); props.DeliveryMode = message.Envelope.RoutingOptions.DeliveryMode; props.ContentType = message.Envelope.RoutingOptions.MessageType; props.Priority = message.Envelope.RoutingOptions.PriorityLevel; props.MessageId = message.MessageId ?? Guid.NewGuid().ToString(); if (!props.IsHeadersPresent()) { props.Headers = new Dictionary <string, object>(); } if (withOptionalHeaders && metadata != null) { foreach (var kvp in metadata?.CustomFields) { if (kvp.Key.StartsWith(Constants.HeaderPrefix, StringComparison.OrdinalIgnoreCase)) { props.Headers[kvp.Key] = kvp.Value; } } } return(props); }
private async Task <bool> StartConsumingAsync() { if (_shutdown) { return(false); } _logger.LogInformation( LogMessages.Consumers.StartingConsumer, ConsumerOptions.ConsumerName); if (Options.FactoryOptions.EnableDispatchConsumersAsync) { if (_asyncConsumer != null) { _asyncConsumer.Received -= ReceiveHandlerAsync; _asyncConsumer.Shutdown -= ConsumerShutdownAsync; } try { _asyncConsumer = CreateAsyncConsumer(); if (_asyncConsumer == null) { return(false); } _chanHost .GetChannel() .BasicConsume( ConsumerOptions.QueueName, ConsumerOptions.AutoAck ?? false, ConsumerOptions.ConsumerName, ConsumerOptions.NoLocal ?? false, ConsumerOptions.Exclusive ?? false, null, _asyncConsumer); } catch (Exception ex) { _logger.LogError(ex, "Exception creating internal RabbitMQ consumer. Retrying..."); await Task.Delay(1000).ConfigureAwait(false); await _chanHost.MakeChannelAsync().ConfigureAwait(false); return(false); } } else { if (_consumer != null) { _consumer.Received -= ReceiveHandler; _consumer.Shutdown -= ConsumerShutdown; } try { _consumer = CreateConsumer(); if (_consumer == null) { return(false); } _chanHost .GetChannel() .BasicConsume( ConsumerOptions.QueueName, ConsumerOptions.AutoAck ?? false, ConsumerOptions.ConsumerName, ConsumerOptions.NoLocal ?? false, ConsumerOptions.Exclusive ?? false, null, _consumer); } catch (Exception ex) { _logger.LogError(ex, "Exception creating internal RabbitMQ consumer. Retrying..."); await Task.Delay(1000).ConfigureAwait(false); await _chanHost.MakeChannelAsync().ConfigureAwait(false); return(false); } } _logger.LogInformation( LogMessages.Consumers.StartedConsumer, ConsumerOptions.ConsumerName); return(true); }
private bool StartConsuming() { if (_shutdown) { return(false); } _logger.LogInformation( LogMessages.Consumers.StartingConsumer, ConsumerOptions.ConsumerName); if (Options.FactoryOptions.EnableDispatchConsumersAsync) { if (_asyncConsumer != null) { _asyncConsumer.Received -= ReceiveHandlerAsync; _asyncConsumer.Shutdown -= ConsumerShutdownAsync; } _asyncConsumer = CreateAsyncConsumer(); if (_asyncConsumer == null) { return(false); } _chanHost .GetChannel() .BasicConsume( ConsumerOptions.QueueName, ConsumerOptions.AutoAck ?? false, ConsumerOptions.ConsumerName, ConsumerOptions.NoLocal ?? false, ConsumerOptions.Exclusive ?? false, null, _asyncConsumer); } else { if (_asyncConsumer != null) { _consumer.Received -= ReceiveHandler; _consumer.Shutdown -= ConsumerShutdown; } _consumer = CreateConsumer(); if (_consumer == null) { return(false); } _chanHost .GetChannel() .BasicConsume( ConsumerOptions.QueueName, ConsumerOptions.AutoAck ?? false, ConsumerOptions.ConsumerName, ConsumerOptions.NoLocal ?? false, ConsumerOptions.Exclusive ?? false, null, _consumer); } _logger.LogInformation( LogMessages.Consumers.StartedConsumer, ConsumerOptions.ConsumerName); return(true); }