public SingletonChannelReceiver(IChannelReceiver channelReceiver, ISingletonLockManager lockManager, ILog log) { _channelReceiver = channelReceiver; _lockManager = lockManager; _log = log; _lockId = channelReceiver.GetType().FullName; //MaxConcurrent and Prefetch must have specific values to work with a singleton implementation. //Override those and let the other values be set from the specific implementation Settings = new SingletonProcessingSettings { MessageLockTimeout = _channelReceiver.Settings.MessageLockTimeout, DeadLetterDeliveryLimit = _channelReceiver.Settings.DeadLetterDeliveryLimit }; _channelReceiver.Settings = Settings; }
public static IHostConfiguration UseSingletonLocks(this IHostConfiguration configuration, ISingletonLockManager lockManager) { configuration.SingletonLockManager = lockManager; return(configuration); }
internal void AddJob(Type settingsType, IDependencyInjection dependencyInjection, ILog log, ISingletonLockManager singletonLockManager) { var jobType = typeof(JobExecutor <>).MakeGenericType(settingsType); var jobExecutor = (IJob)Activator.CreateInstance(jobType, log, singletonLockManager, dependencyInjection); _jobs.TryAdd(jobExecutor.GetType(), jobExecutor); }
public JobExecutor(ILog logger, ISingletonLockManager lockManager, IDependencyInjection dependencyInjection) { _logger = logger; _lockManager = lockManager; _dependencyInjection = dependencyInjection; }