Azure服务总线配对命名空间-模拟故障转移

本文关键字:模拟 故障 转移 命名空间 服务 总线 Azure | 更新日期: 2023-09-27 18:10:10

我正在使用azure服务总线配对的命名空间,需要能够模拟故障转移到辅助命名空间。我为主命名空间输入了一个错误的连接字符串,并看到它失败了,并将消息发送到辅助命名空间。这似乎不再奏效了。我无法通过azure管理门户或其他任何地方找到使名称空间脱机的方法。有人知道怎么做吗?

这是我的代码供参考

var pairedNamespaceConfiguration = this.pairedNamespaceConfigurationDictionary[configurationKey];
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(pairedNamespaceConfiguration.PrimaryNamespace.ConnectionString);
MessagingFactory secondaryMessagingFactory = MessagingFactory.CreateFromConnectionString(pairedNamespaceConfiguration.SecondaryNamespace.ConnectionString);
NamespaceManager secondaryNamespaceManager = NamespaceManager.CreateFromConnectionString(pairedNamespaceConfiguration.SecondaryNamespace.ConnectionString);
SendAvailabilityPairedNamespaceOptions sendAvailabilityOptions = new SendAvailabilityPairedNamespaceOptions(secondaryNamespaceManager, secondaryMessagingFactory, pairedNamespaceConfiguration.BacklogQueueCount, TimeSpan.FromSeconds(pairedNamespaceConfiguration.FailoverIntervalSeconds), false);
factory.PairNamespaceAsync(sendAvailabilityOptions).Wait();
MessageSender messageSender = factory.CreateMessageSender(pairedNamespaceConfiguration.PathName);
string messageContent = JsonConvert.SerializeObject(message);
using(BrokeredMessage brokeredMessage = new BrokeredMessage(messageContent))
{
    messageSender.Send(brokeredMessage);
}

Azure服务总线配对命名空间-模拟故障转移

修改'Windows'system32'drivers'etc'hosts文件,将原始命名空间指向127.0.0.1之类的东西。

我使用这个带有服务总线中继消息的地理复制示例来实现相同的想法。也许它对你也有用。

所有服务总线实体驻留在一个命名空间中。命名空间隶属于数据中心。为了允许在数据中心之间进行故障转移,用户必须为每个数据中心创建一个服务总线和ACS名称空间(如果使用ACS)。任何需要在数据中心出现故障时保持可访问的服务总线中继都必须在两个名称空间中创建。

服务器打开两个netttcp中继端点,分别在两个名称空间中打开一个。服务器处理通过这些端点之一接收到的任何请求。请注意,两个继电器必须具有不同的名称(例如。g、主继电器地址sb://myPrimaryNamespace.servicebus.windows.net/myService-primary、b://mySecondaryNamespace.servicebus.windows.net/myService-secondary)

客户端认为两个复制中继中的一个是活动中继,另一个是备份中继。它打开一个到活动中继的通道,并调用服务上的方法。如果调用失败,并且出现任何不属于服务契约的异常,则客户端放弃通道,打开通往备份中继的通道,并再次调用服务方法。客户端将把新通道视为活动通道,并继续使用该通道,直到下一次故障发生。