首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rebus & AzureServiceBus中使用多个连接字符串

在Rebus & AzureServiceBus中使用多个连接字符串
EN

Stack Overflow用户
提问于 2018-03-12 17:31:25
回答 1查看 331关注 0票数 1

我们一直在使用Rebus向Azure服务总线发送命令。我们有一个跨环境的项目,需要向两个不同的ASB名称空间(不同的连接字符串)发送命令。

我们目前注册Rebus的方式不允许我们创建工厂或使用多个名称空间(据我所知)。

Inside Startup.cs ConfigureServices(…)方法:

代码语言:javascript
复制
services.AddRebus(config =>
{
    var asbConfig = Configuration.GetSection("AzureServiceBusConfiguration").Get<AzureServiceBusConfiguration>();
    config
        .Logging(l => l.Serilog(Log.Logger))
        .Transport(t => t.UseAzureServiceBusAsOneWayClient(asbConfig.ConnectionString))
        .Routing(r => r.TypeBased().Map<MyCommand>($"{asbConfig.Environment}/myQueueName"));

    return config;
});

我试过从几个不同的方向攻击它,但都失败了。是否有一种支持的方法可以使用不同的连接字符串注册多个IBus配置?

我们基本上需要在每个请求范围内旋转这一点,这样我们就可以根据请求头值来配置Rebus。不知道从哪里开始。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-12 18:21:52

虽然Rebus很好地支持通过“容器适配器”概念将自己插入到IoC容器中,但总是自动这样做并不一定有意义。

在这种情况下,我建议您将单向客户端包装成一个专用类,例如CommandSender之类的类,然后命令发送方可以在构造函数中初始化其单向客户端(并在其Dispose方法中再次将其释放)。

单向客户端的创建成本相当低,因此,只要每次需要创建/处理客户端,就可以简单地创建/处理它们。但是,如果您经常需要它们,我建议您使用ConcurrentDictionary来存储初始化的实例--只需记住在应用程序关闭时将它们全部释放。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49241244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档