/// <summary> /// Specify a concurrency limit for tasks executing through the filter. No more than the specified /// number of tasks will be allowed to execute concurrently. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="configurator"></param> /// <param name="partitioner">An existing partitioner that is shared</param> /// <param name="keyProvider">Provides the key from the message</param> public static void UsePartitioner <T>(this IConsumePipeConfigurator configurator, IPartitioner partitioner, Func <ConsumeContext <T>, Guid> keyProvider) where T : class { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } if (partitioner == null) { throw new ArgumentNullException(nameof(partitioner)); } if (keyProvider == null) { throw new ArgumentNullException(nameof(keyProvider)); } byte[] Provider(ConsumeContext <T> context) { return(keyProvider(context).ToByteArray()); } var specification = new PartitionerPipeSpecification <ConsumeContext <T> >(Provider, partitioner); configurator.AddPipeSpecification(specification); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { IFilter <ConsumeContext <TMessage> > filter = new ConductorMessageFilter <TMessage>(_endpoint.GetMessageEndpoint <TMessage>()); configurator.AddPipeSpecification(new FilterPipeSpecification <ConsumeContext <TMessage> >(filter)); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var specification = new ExceptionLoggerSpecification <TMessage>(); configurator.AddPipeSpecification(specification); }
public InMemoryOutboxConfigurationObserver(IConsumePipeConfigurator configurator, Action <IOutboxConfigurator> configure) : base(configurator) { _configure = configure; Connect(this); }
public TimeoutConfigurationObserver(IConsumePipeConfigurator configurator, Action <ITimeoutConfigurator> configure) : base(configurator) { _configure = configure; Connect(this); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var specification = new PartitionMessageSpecification <TMessage>(_partitioner); configurator.AddPipeSpecification(specification); }
public RetryConfigurationObserver(IConsumePipeConfigurator receiveEndpointConfigurator, Action <IRetryConfigurator> configure) : base(receiveEndpointConfigurator) { _configure = configure; Connect(this); }
public ConcurrencyLimitConfigurationObserver(IConsumePipeConfigurator configurator, int concurrentMessageLimit, string id = null) : base(configurator) { Limiter = new ConcurrencyLimiter(concurrentMessageLimit, id); Connect(this); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var specification = new InMemoryOutboxSpecification <TMessage>(); configurator.AddPipeSpecification(specification); }
public DelayedExchangeRedeliveryConfigurationObserver(IConsumePipeConfigurator configurator, Action <IRetryConfigurator> configure) : base(configurator) { _configure = configure; Connect(this); }
protected virtual void AddRedeliveryPipeSpecification <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var redeliverySpecification = new ScheduledRedeliveryPipeSpecification <TMessage>(); configurator.AddPipeSpecification(redeliverySpecification); }
public ServiceEndpointConfigurationObserver(IConsumePipeConfigurator configurator, IServiceEndpoint endpoint) : base(configurator) { _endpoint = endpoint; Connect(this); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { IPipeSpecification <ConsumeContext <TMessage> > specification = new MessageDataTransformSpecification <TMessage>(_repository); configurator.AddPipeSpecification(specification); }
public ScopedConsumePipeSpecificationObserver(IConsumePipeConfigurator configurator, Type filterType, ILifetimeScopeProvider lifetimeScopeProvider) : base(configurator) { _filterType = filterType; _lifetimeScopeProvider = lifetimeScopeProvider; Connect(this); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var specification = new ConcurrencyLimitConsumePipeSpecification <TMessage>(Limiter); configurator.AddPipeSpecification(specification); }
public PartitionMessageConfigurationObserver(IConsumePipeConfigurator configurator, IPartitioner partitioner) : base(configurator) { _partitioner = partitioner; Connect(this); }
public ScheduledRedeliveryConfigurationObserver(IConsumePipeConfigurator configurator, Action <IRetryConfigurator> configure) : base(configurator) { _configure = configure; Connect(this); }
public ScopedConsumePipeSpecificationObserver(IConsumePipeConfigurator configurator, Type filterType, IServiceProvider serviceProvider) : base(configurator) { _filterType = filterType; _serviceProvider = serviceProvider; Connect(this); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { IPipeSpecification <ConsumeContext <TMessage> > specification = new DiagnosticsActivityPipeSpecification <TMessage>(_diagnosticSource, _activityIdKey, _activityCorrelationContextKey); configurator.AddPipeSpecification(specification); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var specification = new ApplicationInsightsConsumeSpecification <TMessage>(_telemetryClient, _telemetryHeaderRootKey, _telemetryHeaderParentKey, _configureOperation); configurator.AddPipeSpecification(specification); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var scopeFilter = new ScopeMessageFilter <TMessage>(_scopeProvider); var specification = new FilterPipeSpecification <ConsumeContext <TMessage> >(scopeFilter); configurator.AddPipeSpecification(specification); }
public MessageScopeConfigurationObserver(IConsumePipeConfigurator receiveEndpointConfigurator, IServiceProvider serviceProvider) : base(receiveEndpointConfigurator) { _scopeProvider = new DependencyInjectionMessageScopeProvider(serviceProvider); _serviceProvider = serviceProvider; Connect(this); }
/// <summary> /// Enable the loading of message data for the specified message type. Message data is large data that is /// stored outside of the messaging system. /// </summary> /// <typeparam name="T">The message type</typeparam> /// <param name="configurator"></param> /// <param name="repository">The message data repository</param> public static void UseMessageData <T>(this IConsumePipeConfigurator configurator, IMessageDataRepository repository) where T : class { var transformConfigurator = new ConsumeTransformSpecification <T>(); transformConfigurator.LoadMessageData(repository); configurator.AddPipeSpecification(transformConfigurator); }
/// <summary> /// Cancels context's CancellationToken once timeout is reached. /// </summary> /// <param name="configurator">The pipe configurator</param> /// <param name="configure">Configure timeout</param> public static void UseTimeout(this IConsumePipeConfigurator configurator, Action <ITimeoutConfigurator> configure = default) { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } var observer = new TimeoutConfigurationObserver(configurator, configure); }
void ConnectConfigurationObserver(IConsumePipeConfigurator configurator) { var configurationObserver = new ServiceEndpointConfigurationObserver(configurator, this); _configurationHandles.Add(configurator.ConnectConsumerConfigurationObserver(configurationObserver)); _configurationHandles.Add(configurator.ConnectHandlerConfigurationObserver(configurationObserver)); _configurationHandles.Add(configurator.ConnectSagaConfigurationObserver(configurationObserver)); _configurationHandles.Add(configurator.ConnectActivityConfigurationObserver(configurationObserver)); }
/// <summary> /// Includes an outbox in the consume filter path, which delays outgoing messages until the return path /// of the pipeline returns to the outbox filter. At this point, the message execution pipeline should be /// nearly complete with only the ack remaining. If an exception is thrown, the messages are not sent/published. /// </summary> /// <param name="configurator">The pipe configurator</param> /// <param name="configure">Configure the outbox</param> public static void UseInMemoryOutbox(this IConsumePipeConfigurator configurator, Action <IOutboxConfigurator> configure = default) { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } var observer = new InMemoryOutboxConfigurationObserver(configurator, configure); }
/// <summary> /// Limits the number of concurrent messages consumed on the receive endpoint, regardless of message type. /// </summary> /// <param name="configurator"></param> /// <param name="concurrentMessageLimit">The concurrency limit for the subsequent filters in the pipeline</param> public static void UseConcurrencyLimit(this IConsumePipeConfigurator configurator, int concurrentMessageLimit) { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } var observer = new ConcurrencyLimitConfigurationObserver(configurator, concurrentMessageLimit); }
public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator) where TMessage : class { var specification = new ConsumeContextRetryPipeSpecification <ConsumeContext <TMessage>, RetryConsumeContext <TMessage> >(Factory, _cancellationToken); _configure?.Invoke(specification); configurator.AddPipeSpecification(specification); }
public void ConfigureServiceEndpoint <T>(IConsumePipeConfigurator configurator) where T : class { var messageCache = ClientCache.GetMessageCache <T>(); IFilter <ConsumeContext <T> > filter = new ServiceEndpointMessageFilter <T>(messageCache); configurator.AddPipeSpecification(new FilterPipeSpecification <ConsumeContext <T> >(filter)); }
/// <summary> /// Apply a message transform, the behavior of which is defined inline using the configurator /// </summary> /// <typeparam name="T">The message type</typeparam> /// <param name="configurator">The consume pipe configurator</param> /// <param name="configure">The configuration callback</param> public static void UseTransform <T>(this IConsumePipeConfigurator configurator, Action <ITransformConfigurator <T> > configure) where T : class { var specification = new ConsumeTransformSpecification <T>(); configure(specification); configurator.AddPipeSpecification(specification); }