gpt4 book ai didi

Azure服务总线: PairedNamespaces insertion when Primary namespace is unreachable

转载 作者:行者123 更新时间:2023-12-03 05:06:33 27 4
gpt4 key购买 nike

我正在模拟 Azure 数据中心的故障以及服务总线在成对命名空间的情况下处理插入的方式。

ms docs指出:

Upon failure to send to the primary queue, the sender begins sending messages to a randomly chosen backlog queue

但是,我注意到队列客户端/消息发送者总是尝试访问主命名空间,并且从不切换到辅助命名空间。

    private MessagingFactory GetFactory(bool isReceiver = false)
{
var primaryConnectionString = PrimaryConnectionString();

var secondaryConnectionString = SecondaryConnectionString();

var primaryFactory =
MessagingFactory.CreateFromConnectionString(primaryConnectionString);

var secondaryMessagingFactory = MessagingFactory.CreateFromConnectionString(secondaryConnectionString);
var secondaryNamespaceManager = NamespaceManager.CreateFromConnectionString(secondaryConnectionString);

var sendAvailabilityOptions = new SendAvailabilityPairedNamespaceOptions(secondaryNamespaceManager,
secondaryMessagingFactory, 1, TimeSpan.FromSeconds(5), isReceiver);
primaryFactory.PairNamespaceAsync(sendAvailabilityOptions).Wait();

return primaryFactory;
}

以及发送测试消息:

            var factory = GetFactory();

var messageSender = factory.CreateMessageSender(_queueName);

var msg = new BrokeredMessage(partition)
{
PartitionKey = partition,
SessionId = partition

};
messageSender.Send(msg);

我测试它的方法是将虚拟 IP 关联到主机文件中的主命名空间 URL。发送失败并出现超时异常(每个后续请求都会出现这种情况)。

我猜 ping 任务没有选择切换,因为我的发件人从未尝试联系辅助命名空间。问题可能出在哪里?

值得一提的是,辅助命名空间中的备份队列已正确创建。

最佳答案

PairedNamespaces 功能未以易于理解或使用的方式进行记录。当您发送消息并且主命名空间出现故障时,客户端将尝试并最终抛出 MessagingCommunicationException。我希望这是一个指定的异常,表明将发生故障转移,但这只是一个标准消息异常标记为 transient 。如果您再次重试该消息,它将通过辅助命名空间发送。

我有一个blog post对此有更多详细信息/代码。

关于Azure服务总线: PairedNamespaces insertion when Primary namespace is unreachable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41636534/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com