キューからアイテムを処理するワーカー ロールがあります。これは基本的に、アイテムをキューから取り出して非同期的に処理する無限ループです。
2 つの構成設定 (PollingInterval
およびMessageGetLimit
) があり、変更されたときに worker ロールが取得するようにします (したがって、再起動は必要ありません)。
private TimeSpan PollingInterval
{
get
{
return TimeSpan.FromSeconds(Convert.ToInt32(RoleEnvironment.GetConfigurationSettingValue("PollingIntervalSeconds")));
}
}
private int MessageGetLimit
{
get
{
return Convert.ToInt32(RoleEnvironment.GetConfigurationSettingValue("MessageGetLimit"));
}
}
public override void Run()
{
while (true)
{
var messages = queue.GetMessages(MessageGetLimit);
if (messages.Count() > 0)
{
ProcessQueueMessages(messages);
}
else
{
Task.Delay(PollingInterval);
}
}
}
問題:
ピーク時には、while ループが 1 秒あたり数回実行される可能性があります。これは、構成アイテムを 1 日あたり最大 100,000 回クエリすることを意味します。
これは有害または非効率的ですか?