Yuebon.Extensions/ServiceExtensions/RabbitMQSetup.cs

(完整代码) 2KB

using 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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。