我尝试遵循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?
答案 0 :(得分:1)
虽然旧客户端仍然可以使用此功能,但我不鼓励使用它。除了该功能的一些有问题的设计问题之外,它对于在需要发送和的流程中也没有帮助。它仅用于仅发送方案,利用故障转移(辅助)名称空间作为存储。这反过来又增加了成本。
更不用说这是一个遗留库。当代等效项是.NET Standard Microsoft.Azure.ServiceBus
库。相反,它提供的Geo-DR feature(仅限高级)并不完全相同,但是提供故障转移是名称空间消失的非常关键的场景。除此之外,名称空间应为24/7。借助Service Bus对Availability Zones的额外支持(仅限高级版),您将获得
受财务支持的SLA,在Azure区域内具有故障隔离的位置,可提供冗余的电源,冷却和网络。
这将消除对成对名称空间的需要。