Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служебная шина Azure — это полностью управляемый брокер сообщений корпоративного типа с поддержкой очередей сообщений и разделов публикации и подписки. Служебная шина используется для отделения друг от друга приложений и служб, что предоставляет следующие преимущества:
- распределение нагрузки между конкурирующими рабочими ролями;
- безопасная маршрутизация для передачи данных и команд управления через границы служб и приложений;
- координация транзакционной работы, требующей высокой степени надежности.
Обзор
Данные передаются между приложениями и (или) службами с помощью сообщений. Сообщение - это контейнер, оформленный метаданными и содержащий данные. Эти данные могут быть любым типом информации, включая структурированные данные, закодированные с помощью стандартных форматов, таких как JSON, XML, Apache Avro, обычный текст.
Вот несколько распространенных сценариев для обмена сообщениями:
Обмен сообщениями. Передача бизнес-данных, например данных о продажах, заказах и перемещении запасов, а также журналов.
Разделение задач между приложениями. Повышение надежности и масштабируемости приложений и служб. Производители и потребители не обязаны одновременно быть доступны или подключены к Интернету. Балансировка нагрузки избавляет от перегрузки служб при всплесках трафика.
Балансировка нагрузки. Несколько конкурирующих потребителей могут одновременно считывать сообщения из очереди, при этом каждый из них безопасно получает эксклюзивный доступ к конкретным сообщениям.
Разделы и подписки. Включите поддержку соотношений 1:n между издателями и подписчиками, позволяя подписчикам выбирать определенные сообщения из потока опубликованного контента.
Транзакции. Вы можете выполнять несколько операций в рамках одной атомарной транзакции. Например, в области транзакции можно выполнить следующие операции:
- Получение сообщения из одной очереди.
- Публикация результатов обработки в одну или несколько очередей.
- Переместите входное сообщение из исходной очереди.
Результаты обработки становятся доступными для следующих потребителей только при условии успешного выполнения каждой из операций, включая успешное согласование входного сообщения, что гарантирует однократную обработку. Такая модель транзакций служит надежной основой для реализации шаблона компенсирующих транзакций в общем контексте решения.
Сеансы обмена сообщениями. Реализуют крупномасштабную координацию рабочих процессов и мультиплексированных передач, при которых требуется строгое упорядочение сообщений или обработка сообщений с отсрочкой.
Если вы уже работали с другими брокерами сообщений, такими как Apache ActiveMQ, основные понятия Служебной шины будут вам знакомы. Ключевое отличие состоит в том, что поскольку Служебная шина предоставляется по модели PaaS (платформа как услуга), вам не нужно беспокоиться о перечисленных ниже действиях. Azure заботится о ваших делах.
- Беспокойство о аппаратных сбоях
- поддержание актуальности операционных систем и продуктов через установку исправлений
- размещение журналов и управление дисковым пространством;
- управление резервными копиями;
- Переключение на резервный компьютер
Основные понятия
В этом разделе обсуждаются основные понятия о шине обслуживания.
Очереди
Сообщения отправляются и принимаются через очереди. Очереди позволяют хранить сообщения, пока принимающее приложение сможет получить и обработать их.
Сообщения в очередях упорядочиваются и получают метку времени поступления. Когда брокер принимает сообщение, оно всегда надежно хранится в трехкратно избыточном хранилище, распределенном по зонам доступности, если пространство имен поддерживает зонирование. служебная шина сохраняет сообщения в памяти или в нестабильном хранилище, пока клиент не сообщает им о том, что они приняты.
Сообщения доставляются в пул-режиме, только когда это запрашивают. В отличие от модели постоянного опроса, реализованной в некоторых других облачных очередях, операция извлечения здесь может длиться долго и завершаться только тогда, когда сообщение готово.
Примечание.
Сравнение очередей Service Bus с очередями хранилища, подробнее см. в разделе Сравнение и сопоставление очередей хранилища и очередей Service Bus.
Темы
Вы также можете использовать разделы для отправки и получения сообщений. Хотя очередь часто используется для точка-точка связи, топики полезны в сценариях публикации и подписки.
Топики могут иметь несколько независимых подписок, которые присоединяются к топику и с точки зрения получателя работают так же, как очереди. Подписчик на тему может получать копию каждого сообщения, отправленного в эту тему. Подписки — это именованные сущности. По умолчанию подписки являются устойчивыми, но для них можно настроить истечение срока действия с автоматическим удалением. Служебная шина уровня "Премиум" также позволяет использовать API JMS (служба сообщений Java) для создания временных подписок, которые существуют только в течение одного подключения.
Вы можете определить правила для подписки. Правило подписки содержит фильтр для определения условия, по которому сообщение копируется в соответствующую подписку, и необязательное действие, которое может изменять метаданные сообщения. Дополнительные сведения см. в статье Фильтры и действия разделов. Эта возможность удобна в следующих случаях:
- вы не хотите, чтобы подписка получала все сообщения, отправленные в раздел;
- Вы хотите помечать сообщения дополнительными метаданными, когда они проходят через систему подписки.
Примечание.
Дополнительные сведения об очередях и разделах см. в статье Очереди, разделы и подписки служебной шины.
Пространства имен
Пространство имен — это контейнер для всех компонентов обмена сообщениями (очереди и темы). Пространство имен может содержать одну или несколько очередей и тем, и оно часто служит контейнером приложения.
Пространство имен можно сопоставить с тем, что в терминологии других брокеров называется "сервером", но эти понятия не полностью эквивалентны. Пространство имен Служебной шины предоставляет вам вашу собственную часть емкости большого кластера, который состоит из десятков постоянно активных виртуальных машин. При необходимости он охватывает три зоны доступности Azure. Благодаря этому вы получаете все преимущества доступности и надежности, предоставляемые использованием брокера сообщений в огромном масштабе. При этом вам также можно не беспокоиться о базовых сложностях. Служебная шина реализует бессерверный обмен сообщениями.
Расширенные функции
Служебная шина также имеет дополнительные функции, которые позволяют решать более сложные задачи обмена сообщениями. В разделах ниже описываются основные возможности.
Сеансы обмена сообщениями
Чтобы реализовать гарантию "первым пришел, первым обслужен" (FIFO) при обработке сообщений в очередях или подписках служебной шины, используйте сеансы. Сеансы также можно использовать в реализации шаблонов ответа на запросы. Шаблон ответа на запрос позволяет приложению отправителя отправлять запрос и предоставляет способ правильной отправки ответа в приложение отправителя. Дополнительные сведения см. в статье Сеансы обмена сообщениями.
Автоматическая переадресация
Функция автоматического переадресации позволяет связать очередь или подписку с другой очередью или разделом, который является частью того же пространства имен. Если включена автоматическая переадресация, служебная шина автоматически удаляет сообщения, помещенные в первую очередь или подписку (источник), и помещает их во вторую очередь или раздел (место назначения). Дополнительные сведения см. в разделе "Цепочка служебная шина сущностей с автоматической пересылкой"
Перемещение в очередь мертвых писем
Service Bus очереди и подписки топиков предоставляют вторичную очередь, называемую очередью недоставленных писем (DLQ). Очередь недоставленных писем содержит сообщения, которые не могут быть доставлены получателю или сообщения, которые не могут быть обработаны. Вы можете удалить сообщения из очереди недоставленных сообщений и проверить их. Приложение может с помощью оператора, исправлять проблемы и повторно отправить сообщение, регистрировать тот факт, что произошла ошибка и предпринять исправление. Дополнительные сведения см. в статье Обзор очередей недоставленных сообщений служебной шины.
Доставка по расписанию
Сообщения можно отправлять в очередь или раздел для отложенной обработки. Например, вы можете запланировать обработку задания системой в определенное время. Дополнительные сведения см. в разделе Запланированные сообщения.
Отсрочка сообщений
Когда клиент очереди или подписки получает сообщение, которое можно обработать, но обработка в данный момент невозможна из-за исключительных обстоятельств в приложении, этот клиент может перенести обработку такого сообщения на более позднее время. Сообщение остается в очереди или подписке, но игнорируется. Дополнительные сведения см. в статье Откладывание сообщений.
Транзакции
Транзакция объединяет две или несколько операций в область выполнения. Служба Service Bus поддерживает группировку операций в отношении одной сущности обмена сообщениями (очередь, тема, подписка) в рамках транзакции. Дополнительные сведения см. в статье Обзор обработки транзакций в служебной шине.
Фильтры и действия
Подписчики могут самостоятельно определять, какие сообщения они хотят получать из раздела. Эти сообщения определяются в одном или нескольких именованных правилах подписки. Каждое правило состоит из условия фильтра, которое выбирает определенные сообщения и при необходимости содержит действие , которое заметит выбранное сообщение. При каждом совпадении с условиями правила подписка создает копию сообщения, которая может быть по-разному аннотирована в зависимости от совпадающих правил. Дополнительные сведения см. в статье Фильтры и действия разделов.
Автоматическое удаление в режиме простоя
Автоматическое удаление при простое позволяет настроить интервал бездействия, по истечении которого очередь автоматически удаляется. Интервал сбрасывается, когда в очереди появляется трафик. Минимальная длительность составляет 5 минут.
Поиск повторяющихся данных
Если происходит ошибка, вызывающая у клиента сомнения относительно результата операции отправки, обнаружение дубликатов устраняет эти сомнения, позволяя отправителю повторно отправить то же сообщение, а очередь или раздел отбрасывает все дубликаты. Дополнительные сведения см. в разделе Обнаружение дубликатов.
Пакетное удаление сообщений
Служебная шина Azure поддерживает удаление сообщений в пакетах. Это полезно в сценариях, когда срок действия сообщений в очередях или подписках истек или когда они больше не актуальны, что требует очистки. Дополнительные сведения см. в разделе "Пакетное удаление".
Безопасность
Служебная шина поддерживает такие протоколы безопасности, как общие ключи доступа (SAS), управление доступом на основе ролей (RBAC) и доступ управляющими удостоверениями для ресурсов Azure.
Служебная шина поддерживает стандартные протоколы AMQP 1.0 и HTTP/REST.
Восстановление после геокатастроф
Если происходит авария на уровне региона или центра обработки данных Azure, геоизбыточное аварийное восстановление позволяет продолжать обработку данных в другом регионе или центре обработки данных.
Примечание.
Дополнительные сведения об этих возможностях см. в статье Дополнительные возможности Служебной шины Azure.
обеспечение соответствия стандартам и протоколам.
Основным протоколом передачи данных для Служебной шины является AMQP (расширенный протокол управления очередью сообщений) версии 1.0, реализованный по открытому стандарту ISO/IEC. Он позволяет клиентам создавать приложения, работающие со Служебной шиной и локальными брокерами, например ActiveMQ или RabbitMQ. Руководство по протоколу AMQP содержит подробные сведения на случай, если вам нужна такая абстракция.
Служебная шина уровня "Премиум" полностью совместима с API службы сообщений Java (JMS) 2.0 для Java/Jakarta EE. И наконец, Служебная шина уровня "Стандартный" поддерживает подмножество JMS 1.1, предназначенное для работы с очередями. JMS представляет собой популярную абстракцию для брокеров сообщений, которая интегрируется со множеством приложений и платформ, включая популярную платформу Spring. Чтобы перейти на использование Служебной шины Azure с других брокеров, достаточно просто воссоздать топологию очередей и разделов, а затем изменить зависимости и конфигурацию на стороне поставщика клиента. Пример вы найдете в руководстве по миграции на ActiveMQ.
Клиентские библиотеки
Полностью поддерживаемые клиентские библиотеки Служебной шины включены в пакет Azure SDK.
-
Служебная шина Azure для .NET
- Сторонние платформы, обеспечивающие более высокий уровень абстракции, созданные на основе пакета SDK, включают NServiceBus и MassTransit.
- Библиотеки Служебной шины Azure для Java
- Поставщик Служебной шины Azure для Java JMS 2.0
- модули Azure Service Bus для JavaScript и TypeScript
- Библиотеки Azure Service Bus для Python
Основным протоколом Служебной шины Azure является AMQP 1.0, с которым можно работать из любого совместимого клиента. Некоторые клиенты AMQP с открытым кодом включают примеры, явным образом демонстрирующие взаимодействие со Служебной шиной. Ознакомьтесь с руководством по протоколу AMQP 1.0, чтобы узнать, как напрямую использовать возможности Служебной шины через клиенты AMQP 1.0.
| Язык | Библиотека |
|---|---|
| Java | Apache Qpid Proton-J |
| C/C++ | Azure uAMQP C, Apache Qpid Proton-C |
| Python | Azure uAMQP для Python, Apache Qpid Proton Python) |
| PHP | Azure uAMQP для PHP |
| Рубин | Apache Qpid Proton Ruby |
| Вперед | Azure Go AMQP, Apache Qpid Proton Go |
| C#/F#/VB | AMQP .NET Lite, Apache NMS AMQP |
| JavaScript/Node | Rhea |
Интеграция
Служебная шина полностью интегрируется со многими службами Microsoft и Azure, например со следующими:
- Сетка событий
- Логические приложения
- Функции Azure
- Power Platform
- Dynamics 365
- Azure Stream Analytics
Следующие шаги
Чтобы начать работу с обменом сообщениями в Service Bus, см. следующие статьи:
- Очереди, топики и подписки Service Bus
- Краткое руководство. .NET, Java, JMS или NServiceBus
- Цены на служебную шину
- Обмен сообщениями: уровень "Премиум"