📌  相关文章
📜  在没有 Console.ReadLine() 的情况下运行 rabbitmq; (1)

📅  最后修改于: 2023-12-03 15:08:03.910000             🧑  作者: Mango

在没有 Console.ReadLine() 的情况下运行 rabbitmq

如果您的应用程序需要使用 Rabbitmq,但是您的场景没有控制台输入,您可能需要一些新的工具来帮助您使其正常工作。

下面是一些建议:

使用环境变量

您可以使用环境变量来传递连接到 Rabbitmq 的信息。这种方法可以允许您在不暴露连接信息的情况下启动您的应用程序。

var factory = new ConnectionFactory()
{
    HostName = Environment.GetEnvironmentVariable("RABBITMQ_HOST"),
    Port = int.Parse(Environment.GetEnvironmentVariable("RABBITMQ_PORT")),
    UserName = Environment.GetEnvironmentVariable("RABBITMQ_USERNAME"),
    Password = Environment.GetEnvironmentVariable("RABBITMQ_PASSWORD")
};

using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
    // Your code here
}
使用配置文件

另一种方法是使用配置文件。你可以使用 .json 或 .xml 文件来存储 Rabbitmq 连接信息,并在应用程序中读取它们。

var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", false, true)
    .Build();

var factory = new ConnectionFactory()
{
    HostName = configuration.GetSection("Rabbitmq:HostName").Value,
    Port = int.Parse(configuration.GetSection("Rabbitmq:Port").Value),
    UserName = configuration.GetSection("Rabbitmq:UserName").Value,
    Password = configuration.GetSection("Rabbitmq:Password").Value
};

using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
    // Your code here
}
使用参数

如果您的应用程序可以接受参数,则可以将 Rabbitmq 连接信息作为参数传递。

var hostName = args[0];
var port = int.Parse(args[1]);
var userName = args[2];
var password = args[3];

var factory = new ConnectionFactory()
{
    HostName = hostName,
    Port = port,
    UserName = userName,
    Password = password
};

using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
    // Your code here
}

最后,您可以根据您的应用程序需要选择其中一种方法(或结合使用),以使您的应用程序能够在没有控制台读取的情况下使用 Rabbitmq。