Служебная шина Azure: часто задаваемые вопросы

В этой статье обсуждаются некоторые часто задаваемые вопросы о служебной шине Microsoft Azure. Вы также можете посетить страницу Часто задаваемые вопросы о поддержке Azure, чтобы получить общие сведения о ценах и поддержке Azure.

Общие вопросы о служебной шине Azure

Что такое служебная шина Azure?

Служебная шина Azure — это облачная платформа асинхронного обмена сообщениями, которая позволяет отправлять данные между несвязанными системами. Корпорация Майкрософт предлагает эту возможность в виде услуги, а значит вам не нужно развертывать собственное оборудование для ее использования.

Что такое пространство имен служебной шины?

Пространство имен предоставляет контейнер для адресации ресурсов служебной шины в вашем приложении. Создание пространства имен является первым и обязательным шагом перед началом работы со служебной шиной.

Что такое очередь служебной шины Azure?

Очередь служебной шины — это сущность, в которой сохраняются сообщения. Очереди целесообразно использовать при наличии нескольких приложений или нескольких частей распределенного приложения, которые должны взаимодействовать друг с другом. Очередь подобна центру распределения, куда поступают несколько продуктов (сообщений), которые затем отправляются из этого расположения.

Что такое разделы и подписки служебной шины Azure?

Раздел можно представить в виде очереди. При использовании нескольких подписок он становится расширенной моделью обмена сообщениями. По сути, это инструмент связи по принципу "один ко многим". В рамках этой модели публикации и подписки (pub/sub) сообщение может быть отправлено из приложения в раздел с несколькими подписками, а затем получено несколькими приложениями.

Что такое секционированная сущность?

Обычная очередь или раздел обрабатываются одним брокером сообщений и сохраняются в одном хранилище сообщений. Секционированная очередь или раздел обрабатываются несколькими брокерами сообщений и хранятся в нескольких хранилищах сообщений. Это означает, что общая пропускная способность секционированной очереди или раздела больше не ограничивается производительностью одного брокера сообщений или хранилища сообщений. Кроме того, при возникновении временного сбоя хранилища сообщений секционированная очередь или раздел останутся доступными.

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

Где Служебная шина Azure хранит данные?

На стандартном уровне Служебной шины Azure в качестве внутреннего уровня хранения используется База данных SQL Azure. Для всех регионов, кроме "Южная Бразилия" и "Юго-Восточная Азия", резервная копия базы данных размещается в другом регионе (обычно в парном регионе Azure). Резервные копии базы данных в регионах "Южная Бразилия" и "Юго-Восточная Азия" хранятся в том же регионе в соответствии с выдвигаемыми для них требованиями к размещению данных.

На уровне "Премиум" Служебная шина Azure хранит метаданные и данные в выбранных регионах. При настройке геоизбыточного аварийного восстановления для пространства имен уровня "Премиум" Служебной шины Azure метаданные копируются в выбранный дополнительный регион.

Какие порты нужно открыть в брандмауэре?

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

  • Протокол AMQP 1.0
  • Протокол HTTP 1.1 с TLS (HTTPS)

В следующей таблице приведены исходящие TCP-порты, которые необходимо открыть для использования этих протоколов в целях взаимодействия со Служебной шиной Azure.

Протокол Порты Сведения
AMQP 5671, 5672 AMQP с TLS. См. Руководство по использованию протокола AMQP.
HTTPS 443 Этот порт используется для HTTP или REST API и для AMQP через WebSockets.

Порт HTTPS обычно требуется для исходящего взаимодействия также при использовании AMQP через порт 5671, так как несколько операций управления, выполняемых клиентскими пакетами SDK, и приобретение маркеров из идентификатора Microsoft Entra (при использовании) выполняется по протоколу HTTPS.

Официальный пакет SDK для Azure обычно использует протокол AMQP для отправки и получения сообщений из Служебной шины.

Вариант протокола AMQP через WebSockets работает через порт TCP 443, как и HTTP/REST API. В остальном с точки зрения функциональности он полностью идентичен обычному протоколу AMQP. Этот вариант протокола имеет более высокую начальную задержку при подключении из-за дополнительных циклов подтверждения соединения, а также требует несколько больших дополнительных расходов для совместного использования порта HTTPS. Если выбран этот режим, для обмена данными достаточно TCP-порта 443. Для выбора режима AMQP через WebSockets используются следующие параметры.

Язык Вариант
.NET (Azure.Messaging.ServiceBus) Создайте объект ServiceBusClient с помощью конструктора, принимающего ServiceBusClientOptions в качестве параметра. Установите для параметра ServiceBusClientOptions.TransportType значение ServiceBusTransportType.AmqpWebSockets.
.NET (Microsoft.Azure.ServiceBus) При создании клиентских объектов используйте конструкторы, принимающие в качестве параметров TransportType, ServiceBusConnection или ServiceBusConnectionStringBuilder.

Для конструктора, принимающего transportType в качестве параметра, установите значение TransportType.AmqpWebSockets для этого параметра.

Для конструктора, принимающего ServiceBusConnection в качестве параметра, установите для параметра ServiceBusConnection.TransportType значение TransportType.AmqpWebSockets.

Если используется ServiceBusConnectionStringBuilder, используйте конструкторы, которые позволяют указать transportType.

Java (com.azure.messaging.servicebus) При создании клиентов установите для параметра ServiceBusClientBuilder.transportType значение AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) При создании клиентов установите для параметра transportType в com.microsoft.azure.servicebus.ClientSettings значение com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript При создании объектов клиентов служебной шины используйте свойство webSocketOptions в ServiceBusClientOptions.
Python При создании клиентов служебной шины установите для параметра ServiceBusClient.transport_type значение TransportType.AmqpOverWebSocket

30 сентября 2026 г. мы удалим библиотеки пакета SDK Служебная шина Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus и com.microsoft.azure.servicebus, которые не соответствуют рекомендациям по пакету SDK Azure. Мы также завершим поддержку протокола SBMP, поэтому вы больше не сможете использовать этот протокол после 30 сентября 2026 года. Перейдите в последние библиотеки пакета SDK Azure, которые предлагают критически важные обновления системы безопасности и улучшенные возможности до этой даты.

Хотя старые библиотеки по-прежнему могут использоваться после 30 сентября 2026 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.

Поддерживает ли Служебная шина Azure службу сообщений Java (JMS)?

Какие IP-адреса нужно добавить в список разрешений?

Чтобы найти нужные IP-адреса для добавления в список разрешений, выполните следующие действия:

  1. В командной строке выполните следующую команду:

    nslookup <YourNamespaceName>.servicebus.windows.net
    
  2. Запишите IP-адрес, возвращенный в Non-authoritative answer.

При использовании избыточности между зонами для пространства имен необходимо выполнить несколько дополнительных действий:

  1. Сначала следует запустить nslookup в пространстве имен.

    nslookup <yournamespace>.servicebus.windows.net
    
  2. Запишите имя в разделе не заслуживающий доверия ответ, который имеет один из следующих форматов:

    <name>-s1.cloudapp.net
    <name>-s2.cloudapp.net
    <name>-s3.cloudapp.net
    
  3. Выполните команду nslookup для каждого из них с суффиксами s1, s2 и s3, чтобы получить IP-адреса всех трех экземпляров, работающих в трех зонах доступности.

    Примечание.

    IP-адрес, возвращенный командой nslookup, не является статическим. Она остается постоянной, пока базовое развертывание не будет удалено или перемещено в другой кластер, однако использование АДРЕСОВ IN не рекомендуется или не поддерживается, и вам потребуется отслеживать изменения IP-адресов.

Где можно найти IP-адрес клиента, отправляющего и принимающего сообщения в пространстве имен?

Мы не ведем журнал IP-адресов клиентов, отправляющих и принимающих сообщения в пространстве имен. Повторно создайте ключи, чтобы все существующие клиенты не прошли проверку подлинности и просмотр параметров управления доступом на основе ролей Azure (Azure RBAC)), чтобы обеспечить доступ только к пространству имен только разрешенных пользователей или приложений.

Если вы используете пространство имен уровня Премиум, используйте фильтрацию по IP-адресам, конечные точки службы виртуальной сети и частные конечные точки, чтобы ограничить доступ к пространству имен.

Рекомендации

Рекомендации по работе со служебной шиной Azure

См. рекомендации по повышению производительности с помощью обмена сообщениями через служебную шину. В этой статье описывается, как оптимизировать производительность обмена сообщениями.

Что необходимо знать перед созданием сущностей?

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

  • Секционирование
  • Сеансы
  • Поиск повторяющихся данных
  • экспресс-сущность.

Цены

В этом разделе содержатся ответы на некоторые часто задаваемые вопросы о ценах на служебную шину.

В этой статье объясняются единицы измерения, на основе которых выставляются счета за использование служебной шины. Подробные сведения о ценах смотрите здесь.

Вы также можете посетить страницу Часто задаваемые вопросы о поддержке Azure, чтобы получить общие сведения о ценах на Azure.

Как выставляется цена на служебную шину?

Все сведения о ценах на использование служебной шины приведены на странице с ценами. Помимо указанных цен, взимается плата за связанные передачи данных за исходящий трафик за пределами центра обработки данных, в котором подготовлено ваше приложение.

Какое использование служебной шины считается передачей данных? А какое таковой не считается?

Любая передача данных в заданном регионе Azure предоставляется без оплаты и любые входящие передачи данных. Передача данных за пределы региона оплачивается как исходящий трафик. Соответствующие тарифы указаны здесь.

Взимает ли служебная шина плату за использование хранилища?

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

У меня есть стандартное пространство имен Служебной шины. Почему в группе ресурсов "$system" отображаются расходы?

Для Служебной шины Azure недавно обновились компоненты выставления счетов. В связи с этим изменением, если у вас есть служебная шина стандартное пространство имен, вы можете увидеть элементы строки для ресурса /subscriptions/<azure_subscription_id>/resourceGroups/$system/providers/Microsoft.ServiceBus/namespaces/$system в группе $systemресурсов.

Эти данные об оплате соответствуют базовой плате за подписку Azure, в которой подготовлено стандартное пространство имен Служебной шины.

Важно отметить, что это не новая оплата, т. е. она существовала и в предыдущей модели выставления счетов. Единственное изменение заключается в том, что они теперь перечислены в разделе $system. Это сделано из-за ограничений в новой системе выставления счетов, которая группирует расходы на уровень подписки, а не привязан к определенному ресурсу в соответствии с идентификатором $system ресурса.

Планы продаж

Список ограничений и квот на служебную шину доступен в этом обзоре квот служебной шины.

Как обрабатывать сообщения, длина которых превышает 1 МБ?

Службы сообщений Служебной шины (очереди, темы и подписки) позволяют приложениям отправлять сообщения размером до 256 КБ (ценовая категория "Стандартный") или до 100 МБ (ценовая категория "Премиум"). Если размер ваших сообщений превышает допустимый размер, используйте шаблон проверки утверждений, описанный в этой записи блога.

Устранение неполадок

Почему я не могу создать пространство имен после удаления его из другой подписки?

При удалении пространства имен из подписки подождите 4 часа, прежде чем создать его заново с тем же именем в другой подписке. В противном случае может появиться следующее сообщение об ошибке: Namespace already exists

Какие исключения порождаются интерфейсами API служебной шины Azure? Какие действия можно предпринять в отношении этих исключений?

Список возможных исключений служебной шины приведен в разделе Общие сведения об исключениях.

Что такое подписанный URL-адрес? На каких языках можно создавать подписи?

Подписи общего доступа представляют собой механизм проверки подлинности на основе безопасных хэшей SHA-256 или URI. Дополнительные сведения о том, как создавать собственные подписи в Node.js, PHP, Java, Python и C#, см. в статье о подписанных URL-адресах.

Управление подпиской и пространством имен

Как перенести пространство имен в другую подписку Azure?

Вы можете переместить пространство имен из одной подписки Azure в другую, используя портал Azure или выполняя команды PowerShell. Для выполнения этой операции пространство имен уже должно быть активно. Пользователь, который выполняет команды, должен обладать правами администратора как в исходной, так и в целевой подписках.

Портал

Чтобы использовать портал Azure для переноса пространств имен служебной шины в другую подписку, следуйте этим инструкциям.

PowerShell

Следующая последовательность команд PowerShell перемещает пространство имен из одной подписки Azure в другую. Для выполнения этой операции пространство имен уже должно быть активным, а пользователь, выполняющий команды PowerShell, должен обладать правами администратора в исходной и целевой подписках.

# Create a new resource group in target subscription
Select-AzSubscription -SubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff'
New-AzResourceGroup -Name 'targetRG' -Location 'East US'

# Move namespace from source subscription to target subscription
Select-AzSubscription -SubscriptionId 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
$res = Find-AzResource -ResourceNameContains mynamespace -ResourceType 'Microsoft.ServiceBus/namespaces'
Move-AzResource -DestinationResourceGroupName 'targetRG' -DestinationSubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff' -ResourceId $res.ResourceId

Можно ли отключить TLS 1.0 или 1.1 в пространствах имен Служебной шины?

Да, можно отключить TLS 1.0 или 1.1 в пространствах имен служебной шины, задав минимальную версию TLS. Дополнительные сведения см. в разделе Настройка минимально требуемой версии протокола TLS для запросов к пространству имен служебной шины.

Следующие шаги

Дополнительные сведения о служебной шине см. в следующих статьях: