Чтение существующих сообщений из подписки / темы в Azure ServiceBus - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь прочитать все существующие сообщения в подписке Azure ServiceBus, используя Microsoft.Azure.ServiceBus.dll (в .Net Core 2.1), но мне трудно.

Я нашел много примеров того, что следующее должно работать, но это не так:

var client = new SubscriptionClient(ServiceBusConnectionString, topicName, subscription, ReceiveMode.PeekLock, null);
var totalRetrieved = 0;

while (totalRetrieved < count)
{
    var messageEnumerable = subscriptionClient.PeekBatch(count);

    //// ... code removed from this example as not relevant
}

Моя проблема в том, что метод .PeekBatch недоступен, и я не понимаю, как мне к этому подойти.

Я скачал исходный код для ServiceBusExplorer с GitHub (https://github.com/paolosalvatori/ServiceBusExplorer), и приведенный выше пример кода во многом похож на это. Но не в пространстве имен .Net Core / Microsoft.Azure.ServiceBus.

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

Ответы [ 2 ]

0 голосов
/ 08 января 2019
var client = new SubscriptionClient(ServiceBusConnectionString, topicName, subscription, ReceiveMode.PeekLock, null);
client .RegisterMessageHandler(
    async (message, token) =>
    {   
        await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
    }
    );

Попробуйте использовать RegisterMessageHandler. Будет непрерывно получать сообщения от объекта. Он регистрирует обработчик сообщений и начинается новый поток для получения сообщений. Этот обработчик ожидается каждый раз, когда получатель получает новое сообщение.

0 голосов
/ 08 января 2019

ServiceBusExplorer использует библиотеку WindowsAzure.ServiceBus, которая является библиотекой .Net Framework, и ее нельзя использовать в приложениях .Net Core. Вы должны использовать Microsoft.Azure.ServiceBus (.Net Standard Library) в приложениях .Net Core.

Проверьте здесь для образцов Microsoft.Azure.ServiceBus

...