You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.4 KiB
C#
59 lines
2.4 KiB
C#
using Autofac;
|
|
using Admin.Core.Common;
|
|
using Admin.Core.EventBus;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using System;
|
|
|
|
namespace Admin.Core.Extensions
|
|
{
|
|
/// <summary>
|
|
/// EventBus 事件总线服务
|
|
/// </summary>
|
|
public static class EventBusSetup
|
|
{
|
|
public static void AddEventBusSetup(this IServiceCollection services)
|
|
{
|
|
if (services == null) throw new ArgumentNullException(nameof(services));
|
|
|
|
if (Appsettings.app(new string[] { "RabbitMQ", "Enabled" }).ObjToBool() && Appsettings.app(new string[] { "EventBus", "Enabled" }).ObjToBool())
|
|
{
|
|
var subscriptionClientName = Appsettings.app(new string[] { "EventBus", "SubscriptionClientName" });
|
|
|
|
|
|
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
|
|
services.AddTransient<AdminDeletedIntegrationEventHandler>();
|
|
|
|
|
|
services.AddSingleton<IEventBus, EventBusRabbitMQ>(sp =>
|
|
{
|
|
var rabbitMQPersistentConnection = sp.GetRequiredService<IRabbitMQPersistentConnection>();
|
|
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
|
|
var logger = sp.GetRequiredService<ILogger<EventBusRabbitMQ>>();
|
|
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
|
|
|
|
var retryCount = 5;
|
|
if (!string.IsNullOrEmpty(Appsettings.app(new string[] { "RabbitMQ", "RetryCount" })))
|
|
{
|
|
retryCount = int.Parse(Appsettings.app(new string[] { "RabbitMQ", "RetryCount" }));
|
|
}
|
|
|
|
return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
public static void ConfigureEventBus(this IApplicationBuilder app)
|
|
{
|
|
if (Appsettings.app(new string[] { "RabbitMQ", "Enabled" }).ObjToBool() && Appsettings.app(new string[] { "EventBus", "Enabled" }).ObjToBool())
|
|
{
|
|
var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
|
|
|
|
eventBus.Subscribe<AdminDeletedIntegrationEvent, AdminDeletedIntegrationEventHandler>();
|
|
}
|
|
}
|
|
}
|
|
}
|