Windows Azure でのジョブ処理の実装に成功した設計は?
要件:
- ジョブをキューにプッシュする機能。
- N 個のワーカーがキューからジョブを消費して処理できます。
- ジョブの呼び出し元は、完了したジョブのアラート (ポーリングではなくプッシュ) を受け取ることができる必要があります。
これまでの研究:
- Azure サービス バス キューを使用して "ジョブ" キューを作成します( http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduction-to-service-bus-queues.aspx ) 。
- Web フロントエンドはジョブをキューにプッシュし、ワーカーはジョブの準備ができるまでReceive() を無期限にブロックします ( http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.aspxを参照)。 (API 呼び出しのトランザクション コストが原因でコストがかかる「null」ロング ポーリングを回避するため)
ジョブ完了の通知に関して:
- ジョブが完了したときに警告を発する明らかな機能はありません。Service Bus のトピック/サブスクリプション ( https://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-topics/ ) を活用して、発信者に「サブスクライブ」させることができると考えました。ただし、「ジョブ終了通知」トピック:
- 複数の「サブスクリプション」エントリを作成しない限り、同じトピックに複数回サブスクライブすることはできないようです (これはスケーリングされません)。
- 各ジョブ ID の「サブスクリプション」を作成し、そのサブスクリプションで (I/O 完了ポートを使用して) Receive() API 呼び出しで呼び出し元をブロックしない限り、ジョブがいつ発生したかについてのリアルタイム通知を取得できません処理されました。
この種のジョブ システム (リアルタイム、低レイテンシ、呼び出し元への完了通知付き) を実装した経験のある人はいますか?
ありがとう