App.configファイルのUnicastBusConfigセクションでもサブスクライブしているエンドポイントを補足して、サブスクライブする別のキューに追加したいと思います。
これを行うために、次のようにカスタム構成ソースを追加しました
public class MyConfigSource : IConfigurationSource
{
public T GetConfiguration<T>() where T : class, new()
{
// the part you are overriding
if (typeof(T) == typeof(UnicastBusConfig))
{
var config = ConfigurationManager.GetSection(typeof(T).Name) as UnicastBusConfig;
config.MessageEndpointMappings.Add(new MessageEndpointMapping() { Endpoint = "MyQueue", Messages = "MyMessageNamespace" });
}
// leaving the rest of the configuration as is:
return ConfigurationManager.GetSection(typeof(T).Name) as T;
}
}
ただし、既存のMessageEndpointMappingsコレクションでAddを呼び出すと、例外が発生します。
エンドポイントの起動時に例外が発生し、エラーがログに記録されました。理由:構成は読み取り専用です。
既存の構成をロードしてコードにビットを追加するためのより良い方法はありますか?