Azureサービスバスの再試行ポリシーを理解しようとしていますが、期待通りの動作をしていません。私は両方のメッセージをリッスンし、特定の空白のキューにメッセージを送信する次のコードを持っています。Azureサービスバスの再試行ポリシーは動作を変更しません
using System;
using Microsoft.ServiceBus;
using Microsoft.ServiceBus.Messaging;
namespace ServiceBusTester
{
class Program
{
static void Main(string[] args)
{
var connectionString = "Endpoint=sb://<NamespaceName>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<SharedAccessKey>";
var queueName = "MyTestQueue";
var retryPolicy = new RetryExponential(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(30), 15);
var ns = NamespaceManager.CreateFromConnectionString(connectionString);
ns.Settings.RetryPolicy = retryPolicy;
if (!ns.QueueExists(queueName))
ns.CreateQueue(queueName);
var mf = MessagingFactory.CreateFromConnectionString(connectionString);
mf.RetryPolicy = retryPolicy;
var mr = mf.CreateMessageReceiver(queueName);
mr.RetryPolicy = retryPolicy;
var retryCount = 0;
mr.OnMessage(_ =>
{
retryCount++;
Console.WriteLine($"{retryCount.ToString().PadLeft(4, ' ')} - Message Received: {_.GetBody<string>()}");
_.Abandon();
}, new OnMessageOptions() { AutoComplete = true });
var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
client.RetryPolicy = retryPolicy;
var message = new BrokeredMessage("This is a test message!");
client.Send(message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
リトライポリシーを15回再試行するように指定していますが、まだデフォルトの10回だけ再試行しています。私はNoRetryポリシーを使ってみましたが、まだ10回再試行します。
私はまた、キュー上Maximum Delivery Count
は、任意の多数に設定したが、それは何も変更しなかったことを検証:
私はきた確信しています多くの異なるクライアント/工場にリトライポリシーを割り当てて外に出たが、ここで何が間違っているのか分からない。
よろしくお願いいたします。私はSOにアップロードする前に私のアプリケーションのキュー名を変更して、Max Delivery Countを変更するのを忘れました。指定したとおりに動作します。 –
ところで、回答に記載された内容を説明するドキュメントはどこにありますか? –
これはいくつかの良い情報を提供するはずです:https://docs.microsoft.com/en-us/azure/best-practices-retry-service-specific#service-bus-retry-guidelines –