C# Azure Настройка второго ServiceBus для аварийного переключения

Я попытался выполнить шаги, упомянутые в документации Microsoft, чтобы настроить второй ServiceBus для предотвращения сбоя ServiceBus.

Однако, когда я запускаю код ниже, соединение никогда не заканчивается:

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");
    }
}

Как правильно настроить ServiceBuses с функцией аварийного переключения?

1 ответ

Хотя эта функция все еще доступна для старого клиента, я не рекомендую использовать ее. Помимо нескольких проблем с дизайном, связанных с этой функцией, она также не помогает в процессе, когда вам нужно отправлять и получать. Он предназначен только для сценария "только для отправки", используя в качестве хранилища резервное (вторичное) пространство имен. Что, в свою очередь, увеличивает стоимость.

Не говоря уже о том, что это устаревшая библиотека. Современный эквивалент.NET Standard Microsoft.Azure.ServiceBusбиблиотека. Вместо этого, он предлагает функцию Geo-DR (только Premium), которая не совсем такая же, но предлагает аварийное переключение в критически важных ситуациях, когда ваше пространство имен исчезло. В остальном пространство имен должно быть доступно 24/7. Благодаря дополнительной поддержке зон доступности с сервисной шиной (только Premium) вы получаете

Соглашение об уровне обслуживания с финансовой поддержкой с изолированными местоположениями в пределах региона Azure, обеспечивающее избыточное питание, охлаждение и сетевое взаимодействие.

что должно устранить необходимость в парных пространствах имен.

Другие вопросы по тегам