Files
IM_NEW/IM.InitCommon/RabbitMqExtension.cs

41 lines
1.5 KiB
C#

using MassTransit;
using Microsoft.Extensions.DependencyInjection;
using System.Reflection;
namespace IM.InitCommon
{
public static class RabbitMqExtension
{
public static IServiceCollection AddRabbitMq(this IServiceCollection services, RabbitMqOptions options, IEnumerable<Assembly> assemblies)
{
var safeAssemblies = assemblies
.Where(a => a.FullName != null &&
!a.FullName.StartsWith("MassTransit", StringComparison.OrdinalIgnoreCase) &&
!a.FullName.StartsWith("System", StringComparison.OrdinalIgnoreCase) &&
!a.FullName.StartsWith("Microsoft", StringComparison.OrdinalIgnoreCase))
.ToArray();
return services.AddMassTransit(x =>
{
x.AddConsumers(safeAssemblies);
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host(options.Host, (ushort)options.Port, "/", c =>
{
c.Username(options.Username);
c.Password(options.Password);
});
cfg.UseMessageRetry(retry => retry.Intervals(
TimeSpan.FromMilliseconds(200),
TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(5)));
cfg.ConfigureEndpoints(context);
});
});
}
}
}