c# - 如何以编程方式将映射添加到 UnicastBusConfig?

标签 c# nservicebus

我希望能够在运行时向我的应用程序添加对可能存在于不同服务器上的其他消息类型的订阅。我想要实现的是一个监控应用程序,我可以在其中添加/删除运行时的订阅。这可能吗?如何获取对当前 UnicastBus 映射的引用?

这是我目前所做的,但我相信这会覆盖当前存在的所有映射。

MessageEndpointMappingCollection mappings = new MessageEndpointMappingCollection();
mappings.Add(new MessageEndpointMapping()
{
    Messages = m.MessageType.ToString(),
    Endpoint = m.QueueName
});

IComponentConfig<UnicastBusConfig> busConfig = config.Configurer.ConfigureComponent<UnicastBusConfig>(ComponentCallModelEnum.None);
busConfig.ConfigureProperty(u => u.MessageEndpointMappings, mappings);

最佳答案

Yves 在他的 Azure 示例中使用了此代码(可在 NSB 示例集合中找到)

using NServiceBus.Config;
using NServiceBus.Config.ConfigurationSource;

namespace OrderService
{
    class ConfigOverride : IProvideConfiguration<UnicastBusConfig>
    {
        public UnicastBusConfig GetConfiguration()
        {
            return new UnicastBusConfig
            {
                MessageEndpointMappings = new MessageEndpointMappingCollection
                {
                    new MessageEndpointMapping { Messages="MyMessages", Endpoint="orderserviceinputqueue" }
                }
            };
        }
    }
}

关于c# - 如何以编程方式将映射添加到 UnicastBusConfig?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5472896/

相关文章:

c# - 返回嵌套数组 JSON 结果的 WEB API C#

database - 将异常记录到 NServiceBus 中的数据库

c# - 执行程序集中的相对路径

c# - 在两个 Access 数据库之间传输数据

c# - SqlDataReader.GetValue 按列名获取数据的方法

log4net - 如何为 NServiceBus 通用主机启用日志记录

.net - NServiceBus中使用IBus的Send方法时如何设置IMessageFormatter?

c# - 从 Azure 存储获取 blob 文件名的最快方法

NServiceBus:如果我的订阅者机器关机,发布的消息会发生什么?

c# - Saga 完成导致 Distributed Transaction Completed 错误