Как создать MessageReceiver по подписке с помощью Microsoft. Azure .ServiceBus - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь заменить. NET Framework NuGet пакет WindowsAzure .ServiceBus на. NET Стандартный Microsoft. Azure .ServiceBus, и я столкнулся с проблемой. Как создать экземпляр подписки MessageReceiver для служебной шины topi c? Я могу создать его для очереди с кодом:

var receiver = new MessageReceiver(connectionString, queueName);
var bytes = receiver.ReceiveAsync().Result.Body;
string s = Encoding.UTF8.GetString(bytes);
Console.WriteLine(s);

, но у MessageReceiver нет конструктора для получения данных из подписки на служебную шину topi c.

1 Ответ

0 голосов
/ 12 февраля 2020

Я нашел ответ в Microsoft. Azure .ServiceBus исходный код. Оказалось, что в классе EntityNameHelper есть функции stati c, которые генерируют пути сущностей сообщений. Например, для подписки это выглядит как

EntityNameHelper.FormatSubscriptionPath(topicName, subscriptionName)

Итак, полный код инициализации MessageReceiver выглядит так:

string path = EntityNameHelper.FormatSubscriptionPath(topicName, subscriptionName);
var receiver = new MessageReceiver(connectionString, path);
var bytes = receiver.ReceiveAsync().Result.Body;
string s = Encoding.UTF8.GetString(bytes);
Console.WriteLine(s);
...