Задание расположения для недоставленных сообщений и политики повтора
При создании подписки на события, можно настроить параметры доставки событий. В этой статье показано, как настроить расположение недоставленных сообщений и параметры повторных попыток. Сведения об этих возможностях см. в разделе Доставка и повторные попытки доставки сообщений сетки событий.
Примечание
Чтобы узнать о доставке сообщений, повторных попытках и мертвых буквах, см. концептуальную статью Доставка и повтор сообщения в сетке событий.
Установка размещения недоставленных сообщений
Чтобы задать расположение недоставленных сообщений, потребуется учетная запись хранения для хранения событий, которые невозможно доставить в конечную точку. В этом примере возвращается идентификатор ресурса существующей учетной записи хранения. Также создается подписка на событие, которая использует контейнер в этой учетной записи хранения для недоставленных сообщений конечной точки.
Примечание
- Перед запуском команд из этой статьи создайте учетную запись хранения и контейнер больших двоичных объектов в хранилище.
- Служба сетки событий создает в этом контейнере большие двоичные объекты. Имена BLOB-объектов будут иметь имя подписки Event Grid со всеми буквами в верхнем регистре. Например, если подписка имеет
My-Blob-Subscription
имя , имена недоставленных BLOB-объектов будут иметьMY-BLOB-SUBSCRIPTION
(myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json
). Такое поведение предназначено для защиты от различий в обработке обращений между службами Azure. - В приведенном выше примере
.../2019/8/8/5/...
представляет ненулевая заполненная дата и час (UTC):.../YYYY/MM/DD/HH/...
.' - Созданные blob-объекты будут содержать одно или несколько событий в массиве, что является важным поведением, которое следует учитывать при обработке недоставленных сообщений.
Портал Azure
При создании подписки на события можно включить недоставленные сообщения на вкладке Дополнительные функции , как показано на следующем рисунке. После включения этой функции укажите контейнер BLOB-объектов, в котором будут храниться недоставленные события, и подписку Azure с хранилищем BLOB-объектов.
При необходимости можно включить управляемое удостоверение, назначаемое системой или пользователем, для недоставленных сообщений. Управляемое удостоверение должно быть членом роли управления доступом на основе ролей (RBAC ), которая позволяет записывать события в хранилище.
Вы также можете включить недоставленные сообщения и настроить параметры для существующей подписки на события. На странице Подписка на события подписки на события перейдите на вкладку Дополнительные функции , чтобы просмотреть параметры недоставленных сообщений, как показано на следующем рисунке.
Azure CLI
containername=testcontainer
topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--deadletter-endpoint $storageid/blobServices/default/containers/$containername
Для отключения сохранения недоставленных сообщений выполните эту команду повторно, чтобы создать подписку на события, но не указывайте значение для deadletter-endpoint
. Удалять подписку на события не нужно.
Примечание
Если вы используете Azure CLI на локальном компьютере, используйте Azure CLI 2.0.56 или более поздней версии. Инструкции по установке последней версии Azure CLI см. в этой статье.
PowerShell
$containername = "testcontainer"
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"
Для отключения сохранения недоставленных сообщений выполните эту команду повторно, чтобы создать подписку на события, но не указывайте значение для DeadLetterEndpoint
. Удалять подписку на события не нужно.
Примечание
Если вы используете Azure PowerShell на локальном компьютере, используйте Azure Poweshell 1.1.0 или более поздней версии. Скачайте и установите последнюю версию Azure PowerShell из загрузок Azure.
Установка политики повтора
При создании подписки на сетку событий, можно задать значения для продолжительности попыток доставки события службой "Сетка событий Azure". По умолчанию служба "Сетка событий Azure" осуществляет не более 30 попыток в течение 24 часов (1440 минут). Вы можете задать любое из этих значений для подписки сетки событий. Значение для срока жизни события должно представлять собой целое число от 1 до 1440. Максимальное значение для попыток должно представлять собой целое число от 1 до 30.
Настроить интервал повтора невозможно.
Портал Azure
При создании подписки на события можно настроить параметры политики повтора на вкладке Дополнительные функции .
Вы также можете настроить параметры политики повтора для существующей подписки на события. На странице Подписка на события подписки на события перейдите на вкладку Дополнительные функции , чтобы просмотреть параметры политики повтора, как показано на следующем рисунке.
Azure CLI
Чтобы установить время жизни события на значение, отличное от 1440 минут, используйте следующий код.
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--event-ttl 720
Чтобы установить максимальное количество попыток, отличающееся от 30, используйте следующий код:
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--max-delivery-attempts 18
Примечание
Если заданы оба параметра event-ttl
и max-deliver-attempts
, служба "Сетка событий Azure" использует первый параметр для указания срока действия и определения того, когда прекращать доставку событий. Например, если задать 30 минут как срок жизни (TTL) и 5 максимальных попыток доставки. Если событие не доставляется через 30 минут (или) не доставляется после 5 попыток( в зависимости от того, что произойдет раньше, событие становится недоставленным. Если задать максимальное число попыток доставки равным 10, в соответствии с графиком экспоненциальных повторных попыток максимальное число попыток доставки произойдет до достижения срока жизни в 30 минут, поэтому установка максимального числа попыток в 10 не повлияет в этом случае, а события будут недоставленными через 30 минут.
PowerShell
Чтобы установить время жизни события на значение, отличное от 1440 минут, используйте следующий код.
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-EventTtl 720
Чтобы установить максимальное количество попыток, отличающееся от 30, используйте следующий код:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-MaxDeliveryAttempt 18
Примечание
Если заданы оба параметра event-ttl
и max-deliver-attempts
, служба "Сетка событий Azure" использует первый параметр для указания срока действия и определения того, когда прекращать доставку событий. Например, если задать 30 минут как срок жизни (TTL) и 5 максимальных попыток доставки. Если событие не доставляется через 30 минут (или) не доставляется после 5 попыток( в зависимости от того, что произойдет раньше, событие становится недоставленным. Если задать максимальное число попыток доставки равным 10, в соответствии с графиком экспоненциальных повторных попыток максимальное число попыток доставки произойдет до достижения срока жизни в 30 минут, поэтому установка максимального числа попыток в 10 не повлияет в этом случае, а события будут недоставленными через 30 минут.
Дальнейшие действия
- Ознакомиться с примером приложения, использующего приложение-функцию Azure для обработки событий недоставленных сообщений, можно на странице примеров недоставленных сообщений Сетки событий Azure для .NET.
- См. дополнительные сведения о доставке сообщений и повторных попытках в Сетке событий.
- Общие сведения о службе "Сетка событий" см. в разделе Общие сведения о службе "Сетка событий Azure".
- Сведения о том, как быстро приступить к использованию службы "Сетка событий", см. в разделе Создание и перенаправление пользовательского события со службой "Сетка событий Azure".
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по