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


Пакетное удаление сообщений в Служебная шина Azure (предварительная версия)

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

Сценарии удаления сообщений пакетной службы

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

  • Просроченные сообщения: удалите сообщения, превышающие время жизни (TTL) и находящиеся в очереди недоставленных писем.
  • Сбой проверки или обработки: удалите сообщения, которые не выполнили проверку или обработку логики и находятся в очереди недоставленных писем.
  • Неактуальные сообщения: удаление сообщений, которые больше не относятся к логике приложения из активной очереди.
  • Обработка повторяющихся данных или неправильного содержимого: удаление повторяющихся или неправильных сообщений из активной очереди.

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

Внимание

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

Как пакетное удаление сообщений в служебная шина

Сообщения можно удалить, вызвав DeleteMessagesAsync в объекте служебная шина Receiver. На стороне DeleteMessagesAsync сервера требуются два параметра: messageCount и beforeEnqueueTime.

  • messageCount: требуемое количество сообщений для удаления. Служба может удалить меньше сообщений, чем это ограничение.
  • beforeEnqueueTime: необязательный параметр DateTimeOffset в формате UTC, представляющий время отсечения для удаления. Удаляются только сообщения, которые были помещены в очередь до этого времени.

Кроме того, можно вызвать PurgeMessagesAsync для очистки всех сообщений от сущности.

При использовании пакетов SDK Azure для выполнения этих операций параметр доEnqueueTime по умолчанию использует текущее время UTC (DateTime.UTCNow()). Важно обеспечить правильные значения, чтобы предотвратить непреднамеренное удаление сообщений.

Примечание.

Операция очистки может привести к увеличению использования ЦП, так как она включает несколько вызовов API. Во время очистки заблокированные сообщения не имеют права на удаление и останутся в сущности.

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

Чтобы изучить Служебная шина Azure функции, попробуйте использовать примеры на выбранном языке:

Примеры для старых клиентских библиотек .NET и Java:

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

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