/// <summary> /// We may want to have a builder/endpoint context that could store things like management endpoint, etc. to configure /// filters and add configuration interfaces for things like concurrency limit and prefetch count /// </summary> /// <param name="configurator"></param> /// <param name="definition"></param> /// <param name="configure">The callback to invoke after the definition configuration has been applied</param> internal static void Apply(this IActiveMqReceiveEndpointConfigurator configurator, IEndpointDefinition definition, Action <IActiveMqReceiveEndpointConfigurator> configure = null) { if (definition.IsTemporary) { configurator.AutoDelete = true; configurator.Durable = false; } if (definition.ConcurrentMessageLimit.HasValue) { configurator.UseConcurrencyLimit(definition.ConcurrentMessageLimit.Value); } definition.Configure(configurator); configure?.Invoke(configurator); }
/// <summary> /// We may want to have a builder/endpoint context that could store things like management endpoint, etc. to configure /// filters and add configuration interfaces for things like concurrency limit and prefetch count /// </summary> /// <param name="configurator"></param> /// <param name="definition"></param> /// <param name="configure">The callback to invoke after the definition configuration has been applied</param> internal static void Apply(this IActiveMqReceiveEndpointConfigurator configurator, IEndpointDefinition definition, Action <IActiveMqReceiveEndpointConfigurator> configure = null) { if (definition.IsTemporary) { configurator.AutoDelete = true; configurator.Durable = false; } if (definition.PrefetchCount.HasValue) { configurator.PrefetchCount = (ushort)definition.PrefetchCount.Value; } if (definition.ConcurrentMessageLimit.HasValue) { var concurrentMessageLimit = definition.ConcurrentMessageLimit.Value; // if there is a prefetchCount, and it is greater than the concurrent message limit, we need a filter if (!definition.PrefetchCount.HasValue || definition.PrefetchCount.Value > concurrentMessageLimit) { configurator.UseConcurrencyLimit(concurrentMessageLimit); // we should determine a good value to use based upon the concurrent message limit if (definition.PrefetchCount.HasValue == false) { var calculatedPrefetchCount = concurrentMessageLimit * 12 / 10; configurator.PrefetchCount = (ushort)calculatedPrefetchCount; } } } definition.Configure(configurator); configure?.Invoke(configurator); }