docker - 在 docker-compose 中将环境变量设置为字符串数组
问题描述
我想从 docker-compose.override 文件中读取队列名称。为此,我将它们制作为字符串数组并在下面定义它们
environment:
- RabbitMQOptions__ConnectionString=-rabbitmq
- RabbitMQOptions__BrokerName=event_demo
- RabbitMQOptions__QueueName=["sampleQueue", "daemonQueue"]
Docker compose 文件构建得很好。但我无法从数组中获取任何值。有没有其他方法可以设置这个环境变量。
我通过 Startup.cs 文件从 docker-compose 文件中注入值
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; }
}
解决方案
推荐阅读
- azure-active-directory - Azure API 管理 - 授权代码的 REST API 端点
- firebase - Cloud Firestore onSnapshot() 是否只能在更改时触发,而不是获取初始状态?
- pine-script - 仅当先前的一系列条件无效时才绘制信号
- spring - Spring Security 记住我失败并出现 CookieTheftException
- xamarin.forms - xamarin 形式:如何在列表视图中将价格和数量相乘
- apache-kafka - Kafka API 和/或协议是否提供查询服务器属性的方法?
- java - 无法将 uri 转换为位图、获取字节、压缩 - 在异步任务中,然后上传到服务器
- python - 根据值划分列表
- android - 最低 SDK 版本和 API 兼容性
- openstack - openstack nova-compute:如何设置资源限制?