Bagikan melalui


Mengaktifkan deteksi pesan duplikat untuk antrean atau topik Azure Service Bus

Saat Anda mengaktifkan deteksi duplikat untuk antrean atau topik, Azure Service Bus menyimpan riwayat semua pesan yang dikirim ke antrean atau topik untuk jumlah waktu yang dikonfigurasi. Selama interval tersebut, antrean atau topik Anda tidak akan menyimpan pesan duplikat apa pun. Mengaktifkan properti ini menjamin tepat setelah pengiriman selama rentang waktu yang ditentukan pengguna. Untuk informasi selengkapnya, lihat Deteksi duplikat. Artikel ini memperlihatkan kepada Anda berbagai cara untuk mengaktifkan deteksi pesan duplikat untuk antrean atau topik Bus Layanan.

Catatan

  • Tingkat dasar Service Bus tidak mendukung deteksi transaksi. Tingkat standar dan premium mendukung deteksi duplikat. Untuk perbedaan antara tingkatan ini, lihat Harga Service Bus.
  • Anda tidak dapat mengaktifkan atau menonaktifkan deteksi duplikat setelah antrean atau topik dibuat. Anda hanya dapat melakukannya pada saat membuat antrean atau topik.

Menggunakan portal Azure

Saat membuat antrean dalam portal Microsoft Azure, pilih Aktifkan deteksi duplikat seperti yang ditampilkan pada gambar berikut. Anda dapat mengonfigurasi ukuran rentang waktu deteksi duplikat saat membuat antrean atau topik.

Enable duplicate detection at the time of the queue creation

Saat membuat topik di portal Microsoft Azure, pilih Aktifkan deteksi duplikat seperti yang diperlihatkan dalam gambar berikut.

Enable duplicate detection at the time of the topic creation

Anda juga dapat mengonfigurasi pengaturan ini untuk antrean atau topik yang ada, jika Anda telah mengaktifkan deteksi duplikat pada saat pembuatan.

Memperbarui ukuran rentang waktu deteksi duplikat untuk antrean atau topik yang sudah ada

Untuk mengubah ukuran rentang waktu deteksi duplikat untuk antrean atau topik yang sudah ada, pada halaman Gambaran Umum, pilih Ubah untuk rentang waktu deteksi duplikat.

Antrean

Set duplicate detection window size for a queue

Topik

Set duplicate detection window size for a topic

Menggunakan Azure CLI

Untuk membuat antrean dengan deteksi duplikat yang aktif, gunakan perintah az servicebus queue create dengan --enable-duplicate-detection diatur ke true.

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

Untuk membuat topik dengan deteksi duplikat yang aktif, gunakan perintah az servicebus topic create dengan --enable-duplicate-detection diatur ke true.

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

Contoh di atas juga mengatur ukuran rentang waktu deteksi duplikat dengan menggunakan parameter --duplicate-detection-history-time-window. Ukuran rentang waktu diatur ke satu hari. Nilai default adalah 10 menit dan nilai maksimum yang diizinkan adalah tujuh hari.

Untuk memperbarui antrean dengan ukuran rentang waktu deteksi baru, gunakan perintah az servicebus queue update dengan parameter --duplicate-detection-history-time-window. Dalam contoh ini, ukuran rentang waktu diperbarui menjadi tujuh hari.

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

Demikian pula, untuk memperbarui topik dengan ukuran rentang waktu deteksi baru, gunakan perintah az servicebus topic update dengan parameter --duplicate-detection-history-time-window. Dalam contoh ini, ukuran rentang waktu diperbarui menjadi tujuh hari.

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

Menggunakan Azure PowerShell

Untuk membuat antrean dengan deteksi duplikat yang aktif, gunakan perintah New-AzServiceBusQueue dengan -RequiresDuplicateDetection diatur ke $True.

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

Untuk membuat topik dengan deteksi duplikat yang aktif, gunakan perintah New-AzServiceBusTopic dengan -RequiresDuplicateDetection diatur ke true.

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

Contoh di atas juga mengatur ukuran rentang waktu deteksi duplikat dengan menggunakan parameter -DuplicateDetectionHistoryTimeWindow. Ukuran rentang waktu diatur ke satu hari. Nilai default adalah 10 menit dan nilai maksimum yang diizinkan adalah tujuh hari.

Untuk memperbarui antrean dengan ukuran rentang waktu deteksi baru, lihat contoh berikut. Dalam contoh ini, ukuran rentang waktu diperbarui menjadi tujuh hari.

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

$queue.DuplicateDetectionHistoryTimeWindow='P7D'

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

Untuk memperbarui topik dengan ukuran rentang waktu deteksi baru, lihat contoh berikut. Dalam contoh ini, ukuran rentang waktu diperbarui menjadi tujuh hari.

$topic=Get-AzServiceBusTopic -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic

$topic.DuplicateDetectionHistoryTimeWindow='P7D'

Set-AzServiceBusTopic -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic `
    -TopicObj $topic

Menggunakan templat Azure Resource Manager

Untuk membuat antrean dengan deteksi duplikat yang aktif, atur requiresDuplicateDetection ke true di bagian properti antrean. Untuk informasi selengkapnya, lihat templat referensi Microsoft.ServiceBus namespaces/queues. Tentukan nilai untuk properti duplicateDetectionHistoryTimeWindow untuk mengatur ukuran rentang waktu deteksi duplikat. Dalam contoh berikut, ini diatur ke satu hari.

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

Untuk membuat topik dengan deteksi duplikat yang aktif, atur requiresDuplicateDetection ke true di bagian properti topik. Untuk informasi selengkapnya, lihat templat referensi 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"
          }
        }
      ]
    }
  ]
}

Langkah berikutnya

Cobalah sampel dalam bahasa pilihan Anda untuk menjelajahi fitur Azure Service Bus.

Temukan sampel untuk pustaka klien .NET dan Java yang lebih lama di bawah ini:

Pada 30 September 2026, kami akan menghentikan pustaka Azure Bus Layanan SDK WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus, dan com.microsoft.azure.servicebus, yang tidak sesuai dengan panduan Azure SDK. Kami juga akan mengakhiri dukungan protokol SBMP, sehingga Anda tidak akan lagi dapat menggunakan protokol ini setelah 30 September 2026. Migrasikan ke pustaka Azure SDK terbaru, yang menawarkan pembaruan keamanan penting dan kemampuan yang ditingkatkan, sebelum tanggal tersebut.

Meskipun pustaka lama masih dapat digunakan melebihi 30 September 2026, pustaka tersebut tidak akan lagi menerima dukungan dan pembaruan resmi dari Microsoft. Untuk informasi selengkapnya, lihat pengumuman penghentian dukungan.