Azure Service Bus 큐 또는 토픽에 대해 중복 메시지 검색을 사용하도록 설정

큐 또는 토픽에 대해 중복 검색을 사용하도록 설정할 때 Azure Service Bus는 큐 또는 토픽으로 전송된 모든 메시지의 기록을 구성된 시간 동안 유지합니다. 이 기간 동안에는 큐 또는 토픽에 중복된 메시지가 저장되지 않습니다. 이 속성을 사용하도록 설정하면 사용자가 정의한 기간 동안 정확히 한 번만 전달됩니다. 자세한 내용은 중복 검색을 참조하세요. 이 문서에서는 Service Bus 큐 또는 토픽에 대해 중복 메시지 검색을 사용하도록 설정하는 다양한 방법을 보여 줍니다.

참고 항목

  • Service Bus의 기본 계층에서는 중복 검색을 지원하지 않습니다. 표준 및 프리미엄 계층은 중복 검색을 지원합니다. 이러한 계층 간의 차이점은 Service Bus 가격 책정을 참조하세요.
  • 큐 또는 토픽을 만든 후에는 중복 검색을 사용하거나 사용하지 않도록 설정할 수 없습니다. 큐 또는 토픽을 만들 때에만 수행할 수 있습니다.

Azure Portal 사용

Azure Portal에서 를 만들 때 다음 이미지에 표시된 것처럼 중복 검색 사용을 선택합니다. 큐 또는 토픽을 만들 때 중복 검색 기간을 구성할 수 있습니다.

Enable duplicate detection at the time of the queue creation

Azure Portal에서 토픽을 만들 때 다음 이미지에 표시된 것처럼 중복 검색 사용을 선택합니다.

Enable duplicate detection at the time of the topic creation

또한 만드는 시점에 중복 검색을 사용하도록 설정한 경우 기존 큐 또는 토픽에 대해 이 설정을 구성할 수 있습니다.

기존 큐 또는 토픽에 대해 중복 검색 기간 업데이트

기존 큐 또는 토픽에 대해 중복 검색 기간을 변경하려면 개요 페이지에서 중복 검색 창에 대해 변경을 선택합니다.

Set duplicate detection window size for a queue

항목

Set duplicate detection window size for a topic

Azure CLI 사용

중복 검색이 사용하도록 설정된 큐를 만들려면--enable-duplicate-detectiontrue로 설정한 az servicebus queue create 명령을 사용합니다.

az servicebus queue create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --enable-duplicate-detection true \
    --duplicate-detection-history-time-window P1D

중복 검색이 사용하도록 설정된 토픽을 만들려면--enable-duplicate-detectiontrue로 설정한 az servicebus topic create 명령을 사용합니다.

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 매개 변수를 사용하여 중복 검색 기간을 설정합니다. 기간은 1일로 설정됩니다. 기본값은 10분이고 허용되는 최대값은 7일입니다.

새 검색 기간으로 큐를 업데이트하려면--duplicate-detection-history-time-window 매개 변수와 함께 az servicebus queue update 명령을 사용합니다. 이 예에서는 기간이 7일로 업데이트됩니다.

az servicebus queue update \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --duplicate-detection-history-time-window P7D

유사하게 새 검색 기간으로 토픽을 업데이트하려면--duplicate-detection-history-time-window 매개 변수와 함께 az servicebus topic update 명령을 사용합니다. 이 예에서는 기간이 7일로 업데이트됩니다.

az servicebus topic update \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --duplicate-detection-history-time-window P7D

Azure PowerShell 사용

중복 검색이 사용하도록 설정된 큐를 만들려면-RequiresDuplicateDetection$True로 설정한 New-AzServiceBusQueue 명령을 사용합니다.

New-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -RequiresDuplicateDetection $True `
    -DuplicateDetectionHistoryTimeWindow P1D

중복 검색이 사용하도록 설정된 토픽을 만들려면-RequiresDuplicateDetectiontrue로 설정한 New-AzServiceBusTopic 명령을 사용합니다.

New-AzServiceBusTopic -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic `
    -RequiresDuplicateDetection $True
    -DuplicateDetectionHistoryTimeWindow P1D

또한 위의 예에서는 -DuplicateDetectionHistoryTimeWindow 매개 변수를 사용하여 중복 검색 기간을 설정합니다. 기간은 1일로 설정됩니다. 기본값은 10분이고 허용되는 최대값은 7일입니다.

새 검색 기간으로 큐를 업데이트하려면 다음 예를 참조하세요. 이 예에서는 기간이 7일로 업데이트됩니다.

$queue=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue 

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

Set-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -QueueObj $queue

새 검색 기간으로 토픽을 업데이트하려면 다음 예를 참조하세요. 이 예에서는 기간이 7일로 업데이트됩니다.

$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 템플릿 사용

중복 검색이 사용하도록 설정된 큐를 만들려면 큐 속성 섹션에서 requiresDuplicateDetectiontrue로 설정합니다. 자세한 내용은 Microsoft.ServiceBus namespaces/queues 템플릿 참조를 참조하세요. duplicateDetectionHistoryTimeWindow 속성의 값을 지정하여 중복 검색 기간을 설정합니다. 다음 예에서는 1일로 설정됩니다.

{
  "$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"
          }
        }
      ]
    }
  ]
}

중복 검색이 사용하도록 설정된 토픽을 만들려면 토픽 속성 섹션에서 requiresDuplicateDetectiontrue로 설정합니다. 자세한 내용은 Microsoft.ServiceBus namespaces/topics 템플릿 참조를 참조하세요.

{
  "$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 Service Bus 기능을 살펴봅니다.

이전 .NET 및 Java 클라이언트 라이브러리에 대한 샘플은 다음을 참조하세요.

2026년 9월 30일에 Azure SDK 지침을 따르지 않는 Azure Service Bus SDK 라이브러리 WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus 및 com.microsoft.azure.servicebus를 사용 중지합니다. 또한 SBMP 프로토콜에 대한 지원이 종료되므로 2026년 9월 30일 이후에는 더 이상 이 프로토콜을 사용할 수 없습니다. 해당 날짜 마이그레이션에 중요한 보안 업데이트와 개선된 기능을 제공하는 최신 Azure SDK 라이브러리로 마이그레이션합니다.

이전 라이브러리는 2026년 9월 30일 이후에도 계속 사용할 수 있지만 더 이상 Microsoft로부터 공식 지원 및 업데이트를 받을 수 없습니다. 자세한 내용은 사용 중지 공지 지원을 참조하세요.