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

时间:2015-08-28 12:08:43

标签: c# azure namespaces

我正在使用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);
}

2 个答案:

答案 0 :(得分:3)

修改\ Windows \ system32 \ drivers \ etc \ hosts文件,将原始命名空间指向127.0.0.1。这将使原始命名空间连接失败。

答案 1 :(得分:-1)

我使用此示例Geo-replication with Service Bus Relayed Messages来实现相同的想法。也许它对你有用。

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

服务器打开两个NetTcp中继端点,两个命名空间各有一个端点。服务器处理通过其中一个端点接收的任何请求。请注意,两个继电器必须具有不同的名称(.eg,主继电器的地址是sb://myPrimaryNamespace.servicebus.windows.net/myService-primary和b://mySecondaryNamespace.servicebus.windows.net/myService-secondary )。

客户端将两个复制的中继之一视为活动中继,另一个作为备份。它打开一个到活动中继的通道,并调用服务上的方法。如果调用因任何不属于服务合同的异常而失败,则客户端将放弃该通道,打开到备份中继的通道,并再次调用该服务方法。客户端会将新通道视为活动通道,并继续使用该通道直到下一个故障发生。

相关问题