Можно ли подключиться к разделенной на разделы топи c в Azure служебной шине с библиотекой AMQP. Net Lite? - PullRequest
1 голос
/ 05 августа 2020

Мой клиент. NET Базовое приложение использует AMQP. Net Lite-библиотеку для работы с Azure служебной шиной. Когда topi c в пространстве имен служебной шины НЕ разделен (Enable Partitioning выключен OFF ), все работает нормально - я могу подключиться и создать объект ReceiverLink для получения сообщений.

Однако, как только topi c разбивается (Enable Partitioning включается ON ), я получаю следующую ошибку сразу после создания объекта ReceiverLink. Описание ошибки: « Не удается открыть клиент Topi c для типа объекта« Подписчик ». »

Код ошибки переводится в карту AMQP как amqp:not-allowed. Согласно документам , это означает: « Узел пытался использовать фрейм способом, несовместимым с семантикой, определенной в спецификации. « Честно говоря, я с трудом могу понять что это означает с точки зрения абстракций Azure служебной шины, но для меня это звучит удручающе и похоже на « невозможно » ...

С другой стороны, В документации MS указано , что AMQP можно использовать для отправки и получения сообщений:

AMQP теперь поддерживается для отправки и получения сообщений в и из секционированного объекта.

Итак, вопрос в том, можно ли вообще использовать AMQP. NET Lite-библиотеку для получения сообщений от разделенной топи c в Azure служебной шине?

Ответы [ 2 ]

1 голос
/ 07 августа 2020

С другой стороны, в документах MS указано , что AMQP можно использовать для отправки и получения сообщений:

AMQP теперь поддерживается для отправки и получения сообщений в и из секционированная сущность

Эта статья из документов Microsoft опубликована 23 июня 2020 г .: enter image description here

But last update on AMQP. Net Библиотека Lite составляет 5 месяцев go, поэтому Маловероятно, что эта поддержка присутствует прямо сейчас и еще не добавлена ​​в библиотеку с открытым исходным кодом:

enter image description here

You can either raise a pull request or issue for the support in Github repo

0 голосов
/ 13 августа 2020

Видимо, это ошибка в Azure Service Bus. Однако есть обходной путь.

Вместо создания ReceiverLink следующим образом:

var r = new ReceiverLink(session, "SubscriptionName", "TopicName");

Создайте его следующим образом:

var r = new ReceiverLink(session, string.Empty, "TopicName/Subscriptions/SubscriptionName");

ПРИМЕЧАНИЕ: второй параметр может быть любой строкой.

Подробнее см. в этой ветке Github .

...