From f99aa4468788cdb49b69f6f0d3f9c1cbb608c825 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Fri, 27 Jul 2018 10:30:55 +0300 Subject: [PATCH] Refactor rabbitmq module. --- .../AbpBackgroundJobsRabbitMqModule.cs | 12 +++++- .../Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs | 2 +- .../Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 42 +++++++++---------- .../RabbitMQ/RabbitMqBackgroundJobManager.cs | 7 ++-- .../RabbitMQ/Utf8JsonRabbitMqSerializer.cs | 5 --- 5 files changed, 35 insertions(+), 33 deletions(-) diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpBackgroundJobsRabbitMqModule.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpBackgroundJobsRabbitMqModule.cs index d57300bdd7..62ba464b0a 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpBackgroundJobsRabbitMqModule.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpBackgroundJobsRabbitMqModule.cs @@ -20,13 +20,23 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ } public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + StartJobQueueManager(context); + } + + public override void OnApplicationShutdown(ApplicationShutdownContext context) + { + StopJobQueueManager(context); + } + + private static void StartJobQueueManager(ApplicationInitializationContext context) { context.ServiceProvider .GetRequiredService() .Start(); } - public override void OnApplicationShutdown(ApplicationShutdownContext context) + private static void StopJobQueueManager(ApplicationShutdownContext context) { context.ServiceProvider .GetRequiredService() diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs index ca4b393eba..b4e6317969 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs @@ -4,7 +4,7 @@ using Volo.Abp.Threading; namespace Volo.Abp.BackgroundJobs.RabbitMQ { - public interface IJobQueue : IRunnable, IDisposable + public interface IJobQueue : IRunnable, IDisposable { Task EnqueueAsync( TArgs args, diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs index 20be46546a..38a9b2a121 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs @@ -12,56 +12,54 @@ using Volo.Abp.RabbitMQ; namespace Volo.Abp.BackgroundJobs.RabbitMQ { - //TODO: Needs refactoring - public class JobQueue : IJobQueue { private const string ChannelPrefix = "JobQueue."; protected BackgroundJobConfiguration JobConfiguration { get; } protected JobQueueConfiguration QueueConfiguration { get; } - protected IChannelAccessor ChannelAccessor { get; private set; } protected EventingBasicConsumer Consumer { get; private set; } public ILogger> Logger { get; set; } - protected IChannelPool ChannelPool { get; } - protected AbpRabbitMqOptions RabbitMqOptions { get; } protected BackgroundJobOptions BackgroundJobOptions { get; } + protected RabbitMqBackgroundJobOptions RabbitMqBackgroundJobOptions { get; } + protected IChannelPool ChannelPool { get; } protected IRabbitMqSerializer Serializer { get; } protected IBackgroundJobExecuter JobExecuter { get; } - protected RabbitMqBackgroundJobOptions RabbitMqBackgroundJobOptions { get; } protected AsyncLock SyncObj = new AsyncLock(); protected bool IsDiposed { get; private set; } public JobQueue( + IOptions backgroundJobOptions, + IOptions rabbitMqBackgroundJobOptions, IChannelPool channelPool, IRabbitMqSerializer serializer, - IOptions rabbitMqOptions, - IBackgroundJobExecuter jobExecuter, - IOptions backgroundJobOptions, - IOptions rabbitMqBackgroundJobOptions) + IBackgroundJobExecuter jobExecuter) { + BackgroundJobOptions = backgroundJobOptions.Value; + RabbitMqBackgroundJobOptions = rabbitMqBackgroundJobOptions.Value; Serializer = serializer; JobExecuter = jobExecuter; - BackgroundJobOptions = backgroundJobOptions.Value; ChannelPool = channelPool; - RabbitMqOptions = rabbitMqOptions.Value; - RabbitMqBackgroundJobOptions = rabbitMqBackgroundJobOptions.Value; JobConfiguration = BackgroundJobOptions.GetJob(typeof(TArgs)); - - QueueConfiguration = RabbitMqBackgroundJobOptions.JobQueues.GetOrDefault(typeof(TArgs)) ?? - new JobQueueConfiguration( - typeof(TArgs), - RabbitMqBackgroundJobOptions.DefaultQueueNamePrefix + JobConfiguration.JobName - ); + QueueConfiguration = GetOrCreateJobQueueConfiguration(); Logger = NullLogger>.Instance; } + protected virtual JobQueueConfiguration GetOrCreateJobQueueConfiguration() + { + return RabbitMqBackgroundJobOptions.JobQueues.GetOrDefault(typeof(TArgs)) ?? + new JobQueueConfiguration( + typeof(TArgs), + RabbitMqBackgroundJobOptions.DefaultQueueNamePrefix + JobConfiguration.JobName + ); + } + public virtual async Task EnqueueAsync( TArgs args, BackgroundJobPriority priority = BackgroundJobPriority.Normal, @@ -79,7 +77,7 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ } } - public async Task StartAsync(CancellationToken cancellationToken = default) + public virtual async Task StartAsync(CancellationToken cancellationToken = default) { CheckDisposed(); @@ -94,7 +92,7 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ } } - public Task StopAsync(CancellationToken cancellationToken = default) + public virtual Task StopAsync(CancellationToken cancellationToken = default) { Dispose(); return Task.CompletedTask; @@ -191,7 +189,7 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ } } - private void CheckDisposed() + protected void CheckDisposed() { if (IsDiposed) { diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs index 143f71ba2f..75b7dd801a 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs @@ -1,8 +1,6 @@ using System; using System.Threading.Tasks; -using RabbitMQ.Client; using Volo.Abp.DependencyInjection; -using Volo.Abp.RabbitMQ; namespace Volo.Abp.BackgroundJobs.RabbitMQ { @@ -20,8 +18,9 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ BackgroundJobPriority priority = BackgroundJobPriority.Normal, TimeSpan? delay = null) { - var jobQueue = _jobQueueManager.Get(); - return jobQueue.EnqueueAsync(args, priority, delay); + return _jobQueueManager + .Get() + .EnqueueAsync(args, priority, delay); } } } diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/Utf8JsonRabbitMqSerializer.cs b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/Utf8JsonRabbitMqSerializer.cs index f097340b37..c179193fdd 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/Utf8JsonRabbitMqSerializer.cs +++ b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/Utf8JsonRabbitMqSerializer.cs @@ -23,10 +23,5 @@ namespace Volo.Abp.RabbitMQ { return _jsonSerializer.Deserialize(type, Encoding.UTF8.GetString(value)); } - - public T Deserialize(string value) - { - return _jsonSerializer.Deserialize(value); - } } } \ No newline at end of file