Yuebon.Extensions/ServiceExtensions/RabbitMQSetup.cs
(完整代码) 2KBusing RabbitMQ.Client;
namespace Yuebon.Extensions.ServiceExtensions;
/// <summary>
/// RabbitMQ启动服务
/// </summary>
public static class RabbitMQSetup
{
/// <summary>
/// RabbitMQ启动服务
/// </summary>
/// <param name="services"></param>
/// <exception cref="ArgumentNullException"></exception>
public static void AddRabbitMQSetup(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
if (Appsettings.app(new string[] { "RabbitMQ", "Enabled" }).ObjToBool())
{
services.AddSingleton<IRabbitMQPersistentConnection>(sp =>
{
var logger = sp.GetRequiredService<ILogger<DefaultRabbitMQPersistentConnection>>();
var factory = new ConnectionFactory()
{
HostName = Appsettings.app(new string[] { "RabbitMQ", "Connection" }),
DispatchConsumersAsync = true
};
if (!string.IsNullOrEmpty(Appsettings.app(new string[] { "RabbitMQ", "UserName" })))
{
factory.UserName = Appsettings.app(new string[] { "RabbitMQ", "UserName" });
}
if (!string.IsNullOrEmpty(Appsettings.app(new string[] { "RabbitMQ", "Password" })))
{
factory.Password = Appsettings.app(new string[] { "RabbitMQ", "Password" });
}
if (!string.IsNullOrEmpty(Appsettings.app(new string[] { "RabbitMQ", "Port" })))
{
factory.Port = Appsettings.app(new string[] { "RabbitMQ", "Port" }).ObjToInt();
}
var retryCount = 5;
if (!string.IsNullOrEmpty(Appsettings.app(new string[] { "RabbitMQ", "RetryCount" })))
{
retryCount = Appsettings.app(new string[] { "RabbitMQ", "RetryCount" }).ObjToInt();
}
return new DefaultRabbitMQPersistentConnection(factory, logger, retryCount);
});
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。