【发布时间】:2021-11-03 17:56:48
【问题描述】:
目前,我们绑定到本地和测试环境的单个 Azure 服务总线实例(我更喜欢不同的设置,但这不取决于我)。以前我们使用一个自定义框架,它为每个主题创建一个订阅,其名称是服务名称的混合,如果项目是由他的机器上的开发人员运行的,它会附加一个“本地名称”以避免所有开发本地计算机和服务器实例竞争相同的消息。例如,对于 ShoppingService,它为服务器实例创建了一个名为 ShoppingService 的订阅,并在 Joe 的本地计算机中创建了一个名为 ShoppingService-JoeComputer 的订阅。现在我们正在尝试从这个自定义框架切换到 MassTransit,因为我们喜欢它提供的附加功能(而且老实说,自定义框架比我们愿意承认的错误更多)。我们按照 Patterson 发布的这段视频来创建命令、事件和消费者,一切都按照描述进行:
MassTransit - Using Azure Service Bus
但是,我们现在面临着我之前提到的竞争问题。为了解决这个问题,我们将尝试设置我们当前使用的自定义命名约定,所以我的问题是:
-
有没有办法修改 MassTransit 使用的默认命名约定?我们希望将大部分内容保留在它根据命令类型名称创建主题的位置,但我们希望为转发订阅和队列添加一个后缀。换句话说,如果我们在讨论视频中描述的提交订单命令,我们希望订阅名称为“submit-order-joe”,如果它在 joe 的机器上运行,队列名称为“submit-order-joe” .我们可以为每个消费者/客户/发布者手动设置配置,但如果我们可以“全局”设置它会很棒。
-
使用默认约定,如果有两个名为“namespaceOne.SubmitOrder”和“namespaceTwo.SubmitOrder”的命令会发生什么?根据我们所见,它会创建两个不同的主题,但两个订阅都称为“submit-order”,并且都将消息转发到称为“submit-order”的同一个队列。那会令人困惑,我什至不知道 MassTransit 是否会正确使用这些命令。
【问题讨论】:
-
你好,你能把代码贴出来让我们帮忙吗?
标签: c# .net azure azureservicebus masstransit