C#Azure设置用于故障转移的第二个ServiceBus

时间:2018-08-03 03:37:27

标签: c# .net azure azureservicebus servicebus

我尝试遵循Microsoft documentation to set up second ServiceBus to prevent ServiceBus outage中提到的步骤。

但是,当我运行以下代码时,配对永远不会完成:

public class ServiceBusContext
{
    public ServiceBusContext()
    {
        var nsManager1 = NamespaceManager.CreateFromConnectionString("...");
        var messageFactory1 = MessagingFactory.Create(nsManager1.Address, nsManager1.Settings.TokenProvider);

        var nsManager2 = NamespaceManager.CreateFromConnectionString("...");
        var messageFactory2 = MessagingFactory.Create(nsManager2.Address, nsManager2.Settings.TokenProvider);

        var sendAvailabilityOptions = new SendAvailabilityPairedNamespaceOptions(nsManager2, messageFactory2, 10, TimeSpan.Zero, false);

        messageFactory1.PairNamespaceAsync(sendAvailabilityOptions).Wait();

        Debug.WriteLine("Cannot reach this code");
    }
}

如何正确设置具有故障转移功能的ServiceBuse?

1 个答案:

答案 0 :(得分:1)

虽然旧客户端仍然可以使用此功能,但我不鼓励使用它。除了该功能的一些有问题的设计问题之外,它对于在需要发送的流程中也没有帮助。它仅用于仅发送方案,利用故障转移(辅助)名称空间作为存储。这反过来又增加了成本。

更不用说这是一个遗留库。当代等效项是.NET Standard Microsoft.Azure.ServiceBus库。相反,它提供的Geo-DR feature(仅限高级)并不完全相同,但是提供故障转移是名称空间消失的非常关键的场景。除此之外,名称空间应为24/7。借助Service Bus对Availability Zones的额外支持(仅限高级版),您将获得

  受财务支持的SLA,在Azure区域内具有故障隔离的位置,可提供冗余的电源,冷却和网络。

这将消除对成对名称空间的需要。