Настройка обнаружения повторяющихся сообщений для очереди или раздела Служебной шины Azure
Когда вы включите обнаружение повторяющихся сообщений для очереди или раздела, Служебная шина Azure будет сохранять журнал всех сообщений, отправленных в эту очередь или раздел за указанный промежуток времени. В течение этого интервала очередь или раздел не будет сохранять дублирующиеся сообщения. Включение этого свойства гарантирует строго однократную доставку сообщений за промежуток времени, указанный пользователем. Дополнительные сведения см. в статье Обнаружение дубликатов. В этой статье описаны разные способы настройки обнаружения повторяющихся сообщений в очереди или разделе Служебной шины.
Примечание.
- Ценовая категория "Базовый" Служебной шины не поддерживает обнаружение повторяющихся сообщений, а категории "Стандартный" и "Премиум" — поддерживают. Различия между этими ценовыми категориями приведены на странице цен на Служебную шину.
- Вы не можете включить или отключить обнаружение дубликатов после создания очереди или раздела. Это можно сделать только в процессе создания очереди или раздела.
Используя портал Azure
При создании очереди на портале Azure установите флажок Включить обнаружение повторений, как показано на следующем изображении. Интервал времени для обнаружения повторений можно настроить при создании очереди или раздела.
При создании раздела на портале Azure установите флажок Включить обнаружение повторений, как показано на следующем изображении.
Этот параметр также можно настроить для существующей очереди или раздела, если вы включили обнаружение повторений во время их создания.
Изменение интервала обнаружения повторений для существующей очереди или раздела
Чтобы изменить интервал обнаружения повторений для существующей очереди или раздела, на странице Обзор выберите действие Изменить в области Интервал обнаружения повторений.
Очередь
Раздел
Использование Azure CLI
Чтобы создать очередь с обнаружением повторений, выполните команду az servicebus queue create
, указав для параметра --enable-duplicate-detection
значение true
.
az servicebus queue create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name myqueue \
--enable-duplicate-detection true \
--duplicate-detection-history-time-window P1D
Чтобы создать раздел с обнаружением повторений, выполните команду az servicebus topic create
, указав для параметра --enable-duplicate-detection
значение true
.
az servicebus topic create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name mytopic \
--enable-duplicate-detection true \
--duplicate-detection-history-time-window P1D
В приведенных выше примерах также задается размер интервала обнаружения повторений с помощью параметра --duplicate-detection-history-time-window
. Здесь устанавливается интервал длительностью в один день. Значение по умолчанию — 10 минут, а максимально допустимое значение составляет семь дней.
Чтобы настроить новый интервал обнаружения для очереди, выполните команду az servicebus queue update
с параметром --duplicate-detection-history-time-window
. В этом примере устанавливается длительность интервала в семь дней.
az servicebus queue update \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name myqueue \
--duplicate-detection-history-time-window P7D
Аналогичным образом, чтобы настроить новый интервал обнаружения для раздела, выполните команду az servicebus topic update
с параметром --duplicate-detection-history-time-window
. В этом примере устанавливается длительность интервала в семь дней.
az servicebus topic update \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name myqueue \
--duplicate-detection-history-time-window P7D
Использование Azure PowerShell
Чтобы создать очередь с обнаружением повторений, выполните команду New-AzServiceBusQueue
, указав для параметра -RequiresDuplicateDetection
значение $True
.
New-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue `
-RequiresDuplicateDetection $True `
-DuplicateDetectionHistoryTimeWindow P1D
Чтобы создать раздел с обнаружением повторений, выполните команду New-AzServiceBusTopic
, указав для параметра -RequiresDuplicateDetection
значение true
.
New-AzServiceBusTopic -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-Name mytopic `
-RequiresDuplicateDetection $True
-DuplicateDetectionHistoryTimeWindow P1D
В приведенных выше примерах также задается размер интервала обнаружения повторений с помощью параметра -DuplicateDetectionHistoryTimeWindow
. Здесь устанавливается интервал длительностью в один день. Значение по умолчанию — 10 минут, а максимально допустимое значение составляет семь дней.
Чтобы настроить новый интервал обнаружения для очереди, воспользуйтесь следующим примером. В этом примере устанавливается длительность интервала в семь дней.
$queue=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue
$queue.DuplicateDetectionHistoryTimeWindow='P7D'
Set-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue `
-QueueObj $queue
Чтобы настроить новый интервал обнаружения для раздела, воспользуйтесь следующим примером. В этом примере устанавливается длительность интервала в семь дней.
$topic=Get-AzServiceBusTopic -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-Name mytopic
$topic.DuplicateDetectionHistoryTimeWindow='P7D'
Set-AzServiceBusTopic -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-Name mytopic `
-TopicObj $topic
Использование шаблона Azure Resource Manager
Чтобы создать очередь с обнаружением повторений, задайте для параметра requiresDuplicateDetection
значение true
в разделе свойств очереди. Дополнительные сведения см. в справочнике по шаблонам пространств имен/очередей Microsoft.ServiceBus. Укажите значение для свойства duplicateDetectionHistoryTimeWindow
, чтобы задать интервал обнаружения повторений. В следующем примере настраивается значение в один день.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"serviceBusNamespaceName": {
"type": "string",
"metadata": {
"description": "Name of the Service Bus namespace"
}
},
"serviceBusQueueName": {
"type": "string",
"metadata": {
"description": "Name of the Queue"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.ServiceBus/namespaces",
"apiVersion": "2018-01-01-preview",
"name": "[parameters('serviceBusNamespaceName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {},
"resources": [
{
"type": "Queues",
"apiVersion": "2017-04-01",
"name": "[parameters('serviceBusQueueName')]",
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
],
"properties": {
"requiresDuplicateDetection": true,
"duplicateDetectionHistoryTimeWindow": "P1D"
}
}
]
}
]
}
Чтобы создать раздел с обнаружением повторений, задайте для параметра requiresDuplicateDetection
значение true
в разделе свойств раздела. Дополнительные сведения см. в справочнике по шаблонам пространств имен и разделов Microsoft.ServiceBus.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"service_BusNamespace_Name": {
"type": "string",
"metadata": {
"description": "Name of the Service Bus namespace"
}
},
"serviceBusTopicName": {
"type": "string",
"metadata": {
"description": "Name of the Topic"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"apiVersion": "2018-01-01-preview",
"name": "[parameters('service_BusNamespace_Name')]",
"type": "Microsoft.ServiceBus/namespaces",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {},
"resources": [
{
"apiVersion": "2017-04-01",
"name": "[parameters('serviceBusTopicName')]",
"type": "topics",
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces/', parameters('service_BusNamespace_Name'))]"
],
"properties": {
"requiresDuplicateDetection": true,
"duplicateDetectionHistoryTimeWindow": "P1D"
}
}
]
}
]
}
Следующие шаги
Опробуйте примеры на выбранном языке, чтобы изучить возможности Служебной шины Azure.
- Примеры для клиентской библиотеки Служебной шины Azure для .NET (последняя версия)
- Примеры для клиентской библиотеки Служебной шины Azure для Java (последняя версия)
- Примеры для клиентской библиотеки Служебной шины Azure для Python
- Примеры для клиентской библиотеки Служебной шины Azure для JavaScript
- Примеры для клиентской библиотеки Служебной шины Azure для TypeScript
Примеры для более ранних клиентских библиотек .NET и Java см. ниже.
- Примеры для клиентской библиотеки Служебной шины Azure для .NET (прежние версии)
- Примеры для клиентской библиотеки Служебной шины Azure для Java (прежние версии)
30 сентября 2026 г. мы удалим библиотеки пакета SDK Служебная шина Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus и com.microsoft.azure.servicebus, которые не соответствуют рекомендациям по пакету SDK Azure. Мы также завершим поддержку протокола SBMP, поэтому вы больше не сможете использовать этот протокол после 30 сентября 2026 года. Перейдите в последние библиотеки пакета SDK Azure, которые предлагают критически важные обновления системы безопасности и улучшенные возможности до этой даты.
Хотя старые библиотеки по-прежнему могут использоваться после 30 сентября 2026 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.