Миграция очереди служебной шины Azure на тему и подписку в C # - PullRequest
0 голосов
/ 05 июня 2019

Можно ли перенести очередь служебной шины Azure в тему и подписку, просто перенастроив имена путей?

Требуются ли какие-либо изменения кода?

Должны ли третьи лица менять свой код, если я оставлю имена одинаковыми?

1 Ответ

0 голосов
/ 05 июня 2019

Нет, если вы попытаетесь отправить тему с QueueClient, вы получите исключение:

System.InvalidOperationException: 'Cannot open a Queue client for entity type Topic.'

Аналогичным образом, попытка получить подписку приведет к исключению:

Microsoft.Azure.ServiceBus.MessagingEntityNotFoundException: Put token failed. status-code: 404, status-description: The messaging entity 'sb://ns.servicebus.windows.net/subscription' could not be found.

Для отправки вам необходимо заменить QueueClient на TopicClient, который имеет тот же конструктор.

Для получения вы должны будете использовать SubscriptionClient, который нуждается в теме, а также в именах подписки (поэтому небольшое изменение вызывает конструктор).

QueueClient и TopicClient оба наследуются от ClientEntity, но ClientEntity не определяет какой-либо виртуальный или абстрактный метод SendAsync(), поэтому сделать что-то действительно общее не так просто.

Требуемые изменения кода минимальны, в моем случае мне нужно было только изменить конструкторы и объявленные типы для клиентов.

Так что да, третьим сторонам придется изменить свой код, если вы решите перейти ...

...