Azure Service Bus のキューとサブスクリプションでメッセージの期限切れによる配信不能を有効にする
Azure Service Bus のキューおよびトピックのサブスクリプションでは、配信不能キュー (DLQ) と呼ばれるセカンダリ サブキューが提供されます。 配信不能キューを明示的に作成する必要はなく、削除したり、メイン エンティティとは別に管理したりすることはできません。 配信不能キューの目的は、受信者に配信できないメッセージ、または処理できなかったメッセージを保持することです。 詳しくは、「Service Bus の配信不能キューの概要」を参照してください。 この記事では、Service Bus のキューとサブスクリプションで配信不能を有効にするさまざまな方法について説明します。
Azure Portal の使用
Azure portal でキューまたはトピックのサブスクリプションを作成するとき、次の例に示すように [メッセージの期限切れによる配信不能を有効にする] を選択します。
配信不能が有効化されたキューを作成する
配信不能が有効化されたサブスクリプションを作成する
既存のキューでメッセージの期限切れによる配信不能の設定を更新する
Service Bus キューの [概要] ページで、メッセージの期限切れによる [配信不能] の設定の現在の値を選択します。 次の例では、現在の値は [無効] です。 ポップアップ ウィンドウで、メッセージの期限切れによる配信不能を有効または無効にすることができます。
既存のサブスクリプションでメッセージの期限切れによる配信不能の設定を更新する
Service Bus サブスクリプションの [概要] ページで、メッセージの期限切れによる [配信不能] の設定の現在の値を選択します。 次の例では、現在の値は [無効] です。 ポップアップ ウィンドウで、メッセージの期限切れによる配信不能を有効または無効にすることができます。
Azure CLI の使用
メッセージの期限切れによる配信不能が有効化されたキューを作成するには、--enable-dead-lettering-on-message-expiration
を true
に設定した az servicebus queue create
コマンドを使用します。
az servicebus queue create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name myqueue \
--enable-dead-lettering-on-message-expiration true
既存のキューでメッセージの期限切れによる配信不能の設定を有効にするには、--enable-dead-lettering-on-message-expiration
を true
に設定した az servicebus queue update
コマンドを使用します。
az servicebus queue update \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name myqueue \
--enable-dead-lettering-on-message-expiration true
メッセージの期限切れによる配信不能が有効化されたトピックのサブスクリプションを作成するには、--enable-dead-lettering-on-message-expiration
を true
に設定した az servicebus topic subscription create
コマンドを使用します。
az servicebus topic subscription create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--topic-name mytopic \
--name mysubscription \
--enable-dead-lettering-on-message-expiration true
トピックのサブスクリプションでメッセージの期限切れによる配信不能の設定を有効にするには、--enable-dead-lettering-on-message-expiration
を true
に設定した az servicebus topic subscription update
コマンドを使用します。
az servicebus topic subscription update \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--topic-name mytopic \
--name mysubscription \
--enable-dead-lettering-on-message-expiration true
Note
--forward-dead-lettered-messages-to
パラメーターを使用してキューまたはトピックを指定すると、Service Bus によりそのキューまたはトピックに配信不能メッセージが自動的に転送されます。 次に例を示します: az servicebus queue create --resource-group mysbusrg --namespace-name mysbusns --name myqueue --enable-dead-lettering-on-message-expiration true --forward-dead-lettered-messages-to myqueue2
。
Azure PowerShell の使用
メッセージの期限切れによる配信不能が有効化されたキューを作成するには、-DeadLetteringOnMessageExpiration
を $True
に設定した New-AzServiceBusQueue
コマンドを使用します。
New-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue `
-DeadLetteringOnMessageExpiration $True
既存のキューでメッセージの期限切れによる配信不能の設定を有効にするには、次の例に示されているような Set-AzServiceBusQueue
コマンドを使用します。
$queue=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue
$queue.DeadLetteringOnMessageExpiration=$True
Set-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue `
-QueueObj $queue
メッセージの期限切れによる配信不能が有効化されたトピックのサブスクリプションを作成するには、-DeadLetteringOnMessageExpiration
を $True
に設定した New-AzServiceBusSubscription
コマンドを使用します。
New-AzServiceBusSubscription -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-TopicName mytopic `
-SubscriptionName mysubscription `
-DeadLetteringOnMessageExpiration $True
既存のサブスクリプションでメッセージの期限切れによる配信不能の設定を有効にするには、次の例を参照してください。
$subscription=Get-AzServiceBusSubscription -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-TopicName mytopic `
-SubscriptionName mysub
$subscription.DeadLetteringOnMessageExpiration=$True
Set-AzServiceBusSubscription -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-Name mytopic `
-SubscriptionName mysub `
-SubscriptionObj $subscription
注意
-ForwardDeadLetteredMessagesTo
パラメーターを使用してキューまたはトピックを指定すると、Event Grid によりそのキューまたはトピックに配信不能メッセージが自動的に転送されます。
Azure Resource Manager テンプレートの使用
メッセージの期限切れによる配信不能が有効化されたキューを作成するには、キューのプロパティ セクションで deadLetteringOnMessageExpiration
を true
に設定します。 詳細については、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": {
"deadLetteringOnMessageExpiration": true
}
}
]
}
]
}
メッセージの期限切れによる配信不能が有効化されたトピックのサブスクリプションを作成するには、キューのプロパティ セクションで deadLetteringOnMessageExpiration
を 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"
}
},
"serviceBusSubscriptionName": {
"type": "string",
"metadata": {
"description": "Name of the Subscription"
}
},
"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": {
"maxSizeInMegabytes": 1024
},
"resources": [
{
"apiVersion": "2017-04-01",
"name": "[parameters('serviceBusSubscriptionName')]",
"type": "Subscriptions",
"dependsOn": [
"[parameters('serviceBusTopicName')]"
],
"properties": {
"deadLetteringOnMessageExpiration": true
}
}
]
}
]
}
]
}
注意
forwardDeadLetteredMessagesTo
プロパティにキューまたはトピックを指定すると、Event Grid によりそのキューまたはトピックに配信不能メッセージが自動的に転送されます。
次のステップ
Azure Service Bus の機能については、使用する言語のサンプルを試してみてください。
- .NET 用の Azure Service Bus クライアント ライブラリのサンプル (最新)
- Java 用の Azure Service Bus クライアント ライブラリのサンプル (最新)
- Python 用の Azure Service Bus クライアント ライブラリのサンプル
- JavaScript 用の Azure Service Bus クライアント ライブラリのサンプル
- TypeScript 用の 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 から公式のサポートと更新プログラムは提供されなくなります。 詳細については、サポート廃止のお知らせに関するページを参照してください。