Browse Source

Resolved #557: Implement NullBackgroundJobManager.

pull/570/head
Halil ibrahim Kalkan 8 years ago
parent
commit
feddd422bc
  1. 12
      framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobManagerExtensions.cs
  2. 25
      framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/NullBackgroundJobManager.cs
  3. 1
      framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs
  4. 3
      framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs
  5. 5
      framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs
  6. 6
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/EmailSenderBase.cs

12
framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/BackgroundJobManagerExtensions.cs

@ -1,4 +1,5 @@
using System; using System;
using Volo.Abp.DynamicProxy;
using Volo.Abp.Threading; using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundJobs namespace Volo.Abp.BackgroundJobs
@ -20,5 +21,16 @@ namespace Volo.Abp.BackgroundJobs
{ {
return AsyncHelper.RunSync(() => backgroundJobManager.EnqueueAsync<TArgs>(args, priority, delay)); return AsyncHelper.RunSync(() => backgroundJobManager.EnqueueAsync<TArgs>(args, priority, delay));
} }
/// <summary>
/// Checks if background job system has a real implementation.
/// It returns false if the current implementation is <see cref="NullBackgroundJobManager"/>.
/// </summary>
/// <param name="backgroundJobManager"></param>
/// <returns></returns>
public static bool IsAvailable(this IBackgroundJobManager backgroundJobManager)
{
return !(ProxyHelper.UnProxy(backgroundJobManager) is NullBackgroundJobManager);
}
} }
} }

25
framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/NullBackgroundJobManager.cs

@ -0,0 +1,25 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundJobs
{
[Dependency(TryRegister = true)]
public class NullBackgroundJobManager : IBackgroundJobManager, ISingletonDependency
{
public ILogger<NullBackgroundJobManager> Logger { get; set; }
public NullBackgroundJobManager()
{
Logger = NullLogger<NullBackgroundJobManager>.Instance;
}
public virtual Task<string> EnqueueAsync<TArgs>(TArgs args, BackgroundJobPriority priority = BackgroundJobPriority.Normal,
TimeSpan? delay = null)
{
throw new AbpException("Background job system has not a real implementation. If it's mandatory, use an implementation (either the default provider or a 3rd party implementation). If it's optional, check IBackgroundJobManager.IsAvailable() extension method and act based on it.");
}
}
}

1
framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/RabbitMqBackgroundJobManager.cs

@ -4,6 +4,7 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundJobs.RabbitMQ namespace Volo.Abp.BackgroundJobs.RabbitMQ
{ {
[Dependency(ReplaceServices = true)]
public class RabbitMqBackgroundJobManager : IBackgroundJobManager, ITransientDependency public class RabbitMqBackgroundJobManager : IBackgroundJobManager, ITransientDependency
{ {
private readonly IJobQueueManager _jobQueueManager; private readonly IJobQueueManager _jobQueueManager;

3
framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs

@ -17,9 +17,6 @@ namespace Volo.Abp.BackgroundJobs
protected IClock Clock { get; } protected IClock Clock { get; }
protected IBackgroundJobSerializer Serializer { get; } protected IBackgroundJobSerializer Serializer { get; }
/// <summary>
/// Initializes a new instance of the <see cref="DefaultBackgroundJobManager"/> class.
/// </summary>
public BackgroundJobWorker( public BackgroundJobWorker(
IBackgroundJobStore store, IBackgroundJobStore store,
AbpTimer timer, AbpTimer timer,

5
framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs

@ -9,7 +9,7 @@ namespace Volo.Abp.BackgroundJobs
/// <summary> /// <summary>
/// Default implementation of <see cref="IBackgroundJobManager"/>. /// Default implementation of <see cref="IBackgroundJobManager"/>.
/// </summary> /// </summary>
[Dependency(TryRegister = true)] [Dependency(ReplaceServices = true)]
public class DefaultBackgroundJobManager : IBackgroundJobManager, ISingletonDependency public class DefaultBackgroundJobManager : IBackgroundJobManager, ISingletonDependency
{ {
protected IClock Clock { get; } protected IClock Clock { get; }
@ -17,9 +17,6 @@ namespace Volo.Abp.BackgroundJobs
protected IGuidGenerator GuidGenerator { get; } protected IGuidGenerator GuidGenerator { get; }
protected IBackgroundJobStore Store { get; } protected IBackgroundJobStore Store { get; }
/// <summary>
/// Initializes a new instance of the <see cref="DefaultBackgroundJobManager"/> class.
/// </summary>
public DefaultBackgroundJobManager( public DefaultBackgroundJobManager(
IClock clock, IClock clock,
IBackgroundJobSerializer serializer, IBackgroundJobSerializer serializer,

6
framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/EmailSenderBase.cs

@ -68,6 +68,12 @@ namespace Volo.Abp.Emailing
public virtual async Task QueueAsync(string to, string subject, string body, bool isBodyHtml = true) public virtual async Task QueueAsync(string to, string subject, string body, bool isBodyHtml = true)
{ {
if (!BackgroundJobManager.IsAvailable())
{
await SendAsync(to, subject, body, isBodyHtml);
return;
}
await BackgroundJobManager.EnqueueAsync( await BackgroundJobManager.EnqueueAsync(
new BackgroundEmailSendingJobArgs new BackgroundEmailSendingJobArgs
{ {

Loading…
Cancel
Save