Установка переменной env в виде строковых массивов в docker -compose - PullRequest
1 голос
/ 19 февраля 2020

Я хочу прочитать имена очередей из файла docker -compose.override. Для этого я сделал их строковыми массивами и определил их следующим образом:

environment:

 - RabbitMQOptions__ConnectionString=-rabbitmq
 - RabbitMQOptions__BrokerName=event_demo
 - RabbitMQOptions__QueueName=["sampleQueue", "daemonQueue"]

Docker. Но я не могу получить ни одно из значений из массива. Есть ли другой способ настроить эту переменную env.

Я вставляю значение из файла docker -compose через файл Startup.cs

services.AddSingleton<IEventBus, RabbitMQEventBus>(sp =>
        {
            var rabbitMQPersistentConnection = sp.GetRequiredService<IRabbitMQPersistentConnection>();
            var logger = sp.GetRequiredService<ILogger<RabbitMQEventBus>>();
            var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionManager>();
            var options = sp.GetRequiredService<IOptionsMonitor<RabbitMQOptions>>();

            return new RabbitMQEventBus(options.CurrentValue, eventBusSubcriptionsManager, rabbitMQPersistentConnection, logger, services);
        });

И прямо здесь, в конструкторе, я получаю значение путем внедрения зависимости

 public RabbitMQEventBus(
        RabbitMQOptions options,
        IEventBusSubscriptionManager subscriptionManager,
        IRabbitMQPersistentConnection persistentConnection,
        ILogger<RabbitMQEventBus> logger,
        IServiceCollection services
        )
    {
        _persistentConnection = persistentConnection;
        _subsManager = subscriptionManager;
        _options = options;
        _queueName = _options.QueueName[0];
        _consumerChannel = CreateConsumerChannel();
        _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
        _logger = logger;
        _services = services;
        BROKER_NAME = _options.BrokerName;
    }

Вот класс RabbitMQOptions

public class RabbitMQOptions
{
    public string ConnectionString { get; set; }

    public string BrokerName { get; set; }

    public string[] QueueName { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...