Azure Service Bus の Basic または Standard でパーティション分割を有効にする

Service Bus パーティションを使用すると、キューとトピック、またはメッセージング エンティティを複数のメッセージ ブローカーにパーティション分割できます。 パーティション分割は、パーティション分割されたエンティティの全体のスループットが、単一のメッセージ ブローカーのパフォーマンスによって制限されなくなることを意味します。 さらに、アップグレード中など、メッセージ ブローカーが一時的に停止しても、パーティション分割されたキューまたはトピックが使用できなくなることはありません。 パーティション分割されたキューとトピックには、トランザクションやセッションのサポートなど、あらゆる高度な Service Bus 機能を含めることができます。 詳細については、「パーティション分割されたキューとトピック」を参照してください。 この記事では、Service Bus のキューまたはトピックで重複メッセージの検出を有効にするさまざまな方法について説明します。

重要

  • パーティション分割は、Basic または Standard SKU のすべてのキューおよびトピックに対するエンティティの作成で使用できます。
  • 既存のキューまたはトピックで、パーティション分割のオプションを変更することはできません。 オプションを設定できるのは、キューまたはトピックを作成するときのみです。
  • Standard レベルの名前空間では、Service Bus のキューとトピックを 1、2、3、4 または 5 GB のサイズで作成できます (規定のサイズは 1 GB です)。 パーティション分割が有効な場合、Service Bus は指定されたサイズごとにエンティティの 16 個のコピー (16 個のパーティション) を作成します。 そのため、サイズが 5 GB のキューを作成すると、パーティションが 16 個であるため、最大キュー サイズは 5 * 16 = 80 GB になります。

Azure Portal の使用

Azure portal でキューを作成する場合は、次の図に示すように [パーティション分割の有効化] を選択します。

Enable partitioning at the time of the queue creation

Azure portal でトピックを作成する場合は、次の図に示すように [パーティション分割の有効化] を選択します。

Enable partitioning at the time of the topic creation

Azure CLI の使用

パーティション分割を有効にしたキューを作成するには、--enable-partitioningtrue に設定して az servicebus queue create コマンドを使用します。

az servicebus queue create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --enable-partitioning true

パーティション分割を有効にしたトピックを作成するには、--enable-partitioningtrue に設定して az servicebus topic create コマンドを使用します。

az servicebus topic create \
    --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name mytopic \
    --enable-partitioning true

Azure PowerShell の使用

パーティション分割を有効にしたキューを作成するには、-EnablePartitioning$True に設定して New-AzServiceBusQueue コマンドを使用します。

New-AzServiceBusQueue -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -QueueName myqueue `
    -EnablePartitioning $True

パーティション分割を有効にしたトピックを作成するには、-EnablePartitioningtrue に設定して New-AzServiceBusTopic コマンドを使用します。

New-AzServiceBusTopic -ResourceGroup myresourcegroup `
    -NamespaceName mynamespace `
    -Name mytopic `
    -EnablePartitioning $True

Azure Resource Manager テンプレートの使用

パーティション分割を有効にしたキューを作成するには、キューの properties セクションで enablePartitioningtrue に設定します。 詳細については、Microsoft.ServiceBus の名前空間/キューのテンプレート リファレンスに関するページを参照してください。

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

重複データ検出を有効にしたトピックを作成するには、トピックの properties セクションで enablePartitioningtrue に設定します。 詳細については、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": {
            "enablePartitioning": true
          }
        }
      ]
    }
  ]
}

次のステップ

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 から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。