Служебная шина 2.6.6. Сифон парных пространств имен

Как заставить работу получателя парных пространств имен перемещать сообщения из очереди невыполненных работ в основную очередь. Похоже, что работает с отправителями, но с параметром получателей EnableSyphon = true, кажется, не работает. Я всегда вижу сообщения в очереди невыполненных работ и растет. Вся информация, которую я смог найти, - это этот блок кода, но, поскольку Service Bus 2.4 Messaging.Factory не имеет метода Open.

factory = MessagingFactory.Create(SB_Primary_NS_Address);
factory.PairNamespace(new SendAvailabilityPairedNamespaceOptions
{
    EnableSyphon = true,
    TransferQueueCount = 10,
    MessagingFactory = paired-NS_factory,
    NamespaceManager = paired-NS_manager
});
factory.Open();

1 ответ

Они изменили способ сопряжения пространства имен с более свежими версиями. Вместо этого вы вызываете функцию Async (PairNamespaceAsync) из основной фабрики обмена сообщениями, передавая экземпляр PairedNamespaceOptions. Обратите внимание, что возвращаемая Задача фактически является типом Promise, поэтому вы не вызываете Start() для Задачи, потому что она уже была запущена, просто вызываете Waiting().

Кроме того, вы должны убедиться, что вторичное пространство имен и MessagingFactory имеют уровень безопасности управления. Простого наличия публикации недостаточно для MessagingFactory, она не будет отправлять сообщения обратно в основную очередь / тему.

// assume members _messagingFactory, _secondaryNamespaceManager, _secondaryManagementMessagingFactory have been assigned.

try
{
    var pairedNamespaceOptions = new SendAvailabilityPairedNamespaceOptions(_secondaryNamespaceManager,
            _secondaryManagementMessagingFactory,
            1,
            TimeSpan.FromSeconds(30),
            true);
    _messagingFactory.PairNamespaceAsync(pairedNamespaceOptions).Wait();
}
catch (Exception ex)
{
    // logging or handle
}

Несколько полезных ссылок.

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