Поделиться через


Доставка по запросу с помощью HTTP

Эта статья основана на том, что такое Сетка событий Azure? и в статье "Основные сведения о сетке событий", прежде чем приступить к использованию доставки по протоколу HTTP в сетке событий. В ней рассматриваются основные понятия, модели ресурсов и поддерживаемые режимы доставки сообщений. В конце этого документа вы найдете полезные ссылки на статьи, которые помогут вам использовать сетку событий и статьи, которые предлагают подробные концептуальные сведения.

Примечание.

Этот документ помогает приступить к работе с возможностями сетки событий, которые используют протокол HTTP. Эта статья подходит для пользователей, которым требуется интегрировать приложения в облако. Если требуется общаться с данными устройства Интернета вещей, ознакомьтесь с общими сведениями о функции брокера MQTT в Сетка событий Azure.

Источники облачных

Разделы пространства имен сетки событий принимают события, которые соответствуют открытой спецификации CloudEvents 1.0 с использованием привязки протокола HTTP с форматом JSON.

Дополнительные сведения см. в разделе "Поддержка CloudEvents".

CloudEvents con режим палатки s

Спецификация CloudEvents определяет три кон режим палатки можно использовать: двоичные, структурированные и пакетные.

Внимание

С помощью любого con режим палатки можно обмениваться текстом (JSON, text/*и т. д.) или двоичными данными событий в кодировке. Двоичное con режим палатки не используется исключительно для отправки двоичных данных.

Con режим палатки s не относятся к кодировке, используемой, двоичной или текстовой, а о том, как данные события и его метаданные описаны и обмениваются. Структурированный con режим палатки использует одну структуру, например объект JSON, где атрибуты контекста и данные события объединяются в полезные данные HTTP. Двоичный con режим палатки отделяет атрибуты контекста, которые сопоставляются с заголовками HTTP и данными событий, которые являются полезными данными HTTP, закодированными в соответствии со значением типа носителя.Content-Type

Дополнительные сведения см. в статье о con CloudEvents режим палатки для получения дополнительных сведений.

Сообщения и события

CloudEvent обычно содержит данные о событии, объявляющие о вхождений в системе, то есть изменение состояния системы. Однако при использовании CloudEvents можно передать любые данные. Например, можно использовать формат обмена CloudEvents для отправки командного сообщения для запроса действия в подчиненное приложение. Еще одним примером является маршрутизация сообщений из брокера MQTT Сетки событий в раздел. В этом сценарии вы направляете сообщение MQTT, завернутое в конверт CloudEvents.

Доставка по запросу

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

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

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

  • Потребляйте события во время выбора. Например, учитывая бизнес-требования, сообщения обрабатываются ночью.

  • Имитируйте события по приватной ссылке, чтобы данные используют частное IP-пространство.

Примечание.

  • Пространства имен предоставляют более простую модель ресурсов с одним типом раздела. В настоящее время Служба "Сетка событий" поддерживает публикацию собственных событий приложения с помощью разделов пространства имен. Вы не можете использовать события из служб Azure или партнерских систем SaaS с помощью разделов пространства имен. Вы также не можете создавать системные разделы, темы домена или партнерские разделы в пространстве имен.
  • Разделы пространства имен поддерживают формат JSON CloudEvents.

Подписки на события очереди

При получении событий или использовании операций, которые управляют состоянием события, приложение указывает конечную точку пространства имен HTTP, имя раздела и имя подписки на событие очереди . Подписка на событие очереди имеет значение deliveryMode , которое имеет значение queue. Подписки на события очереди используются для использования событий с помощью API доставки по запросу. Дополнительные сведения о создании этих ресурсов см. в статье о создании пространств имен, разделов и подписок на события.

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

Высокоуровневая схема издателя и потребителя с помощью подписки на события. Потребитель использует доставку по запросу.

Операции доставки по запросу

Приложение использует следующие операции при работе с доставкой по запросу.

  • Операция получения используется для чтения одного или нескольких событий с помощью одного запроса в Сетку событий. По умолчанию брокер ожидает до 60 секунд, пока события будут доступны. Например, события становятся доступными для доставки при первой публикации. Успешный запрос на получение возвращает ноль или больше событий. Если события доступны, он возвращает максимально возможное количество доступных событий до запрошенного количества событий. Служба "Сетка событий" также возвращает маркер блокировки для каждого прочитанного события.
  • Маркер блокировки — это своего рода дескриптор, определяющий событие, которое можно использовать для управления его состоянием.
  • Когда приложение-получатель получает событие и обрабатывает его, оно признает это событие. Эта операция предписывает сетке событий удалить событие, чтобы оно не было повторно удалено другому клиенту. Приложение-получатель подтверждает один или несколько маркеров с одним запросом, указав маркеры блокировки до истечения срока их действия.

В некоторых других случаях приложение-получатель может потребоваться освободить или отклонить события.

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

  • Вы можете отказаться от события, если есть условие, возможно, постоянное, что предотвращает обработку события приложением-получателем. Например, неправильно сформированное сообщение может быть отклонено, так как оно не может быть успешно проанализировано. Отклоненные события являются недоставленными, если доступно назначение недоставленной буквы. В противном случае они удаляются.

Область выполнения операций доставки по запросу

При вызове операции получения, подтверждения, выпуска, отклонения или продления блокировки эти действия выполняются в контексте подписки на события. Например, если вы признаете событие, это событие больше не доступно через подписку на события, используемую при вызове действия подтверждения . Другая подписка на события по-прежнему может иметь "то же самое" событие. Это связано с тем, что подписка на событие получает копию опубликованных событий. Эти копии событий эффективно отличаются друг от друга в подписках на события. Каждое событие имеет собственное состояние независимо от других событий.

Фигура данных при получении событий с помощью доставки по запросу

При доставке событий с помощью доставки по запросу сетка событий включает массив объектов, которые, в свою очередь, включают объекты event и brokerProperties . Значение свойства события — CloudEvent, доставленное в структурированное con режим палатки. Объект brokerProperties содержит маркер блокировки, связанный с доставленным CloudEvent. Следующий объект JSON представляет собой пример ответа от операции получения , возвращающей два события:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Отправка и отправка по запросу

Служба "Сетка событий" поддерживает доставку событий отправки и извлечения с помощью HTTP. При принудительной доставке вы определяете назначение в подписке на события, веб-перехватчик или службу Azure, в которую сетка событий отправляет события. При доставке по запросу приложения подписчиков подключаются к сетке событий для использования событий. Доставка по запросу поддерживается для разделов в пространстве имен Сетки событий.

Внимание

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

Схема высокого уровня, показывающая доставку push-уведомлений и доставку по запросу с типом задействованных ресурсов.

Когда следует использовать доставку push-уведомлений и доставку по запросу

Ниже приведены общие рекомендации, которые помогут вам решить, когда следует использовать доставку по запросу или отправке.

Доставка по запросу

  • Вам нужен полный контроль о том, когда будут получать события. Например, приложение может не находиться в течение всего времени, недостаточно стабильно или обрабатывать данные в определенное время.
  • Вам нужен полный контроль над потреблением событий. Например, нижестоящей службы или слоя в приложении-получателе возникает проблема, которая предотвращает обработку событий. В этом случае API доставки по запросу позволяет приложению-потребителю освободить уже прочитанное событие обратно брокеру, чтобы его можно было доставить позже.
  • Вы хотите использовать частные ссылки при получении событий, что возможно только при доставке по запросу, а не при отправке push-уведомлений.
  • У вас нет возможности предоставлять конечную точку и использовать отправку push-уведомлений, но вы можете подключиться к сетке событий для использования событий.

Отправка отправки

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

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

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