0

StackOverflowに関するこの質問/回答に基づいて、すべてのインスタンスでコードを実行するのではなく、単一の Azure インスタンスで特定のコードを一度に実行することを検討しています。

ただし、私が見つけることができないように見えるのは、まだ役割RoleEnvironment.CurrentRoleInstance.Role.Instancesが忙しいかどうか、および/または治癒しているかどうかを判断する方法です。これは、コードの実行の制御を別のインスタンスに引き渡すために必要です。

RoleInstance現在の役割のステータスを決定するためのプロパティがないようです。

4

2 に答える 2

1

複雑なトポロジ ベースの選択を使用するのではなく、単純な「交通警官」パターンを実装するのではなく、別の方法をお勧めします。簡単に言えば、これは一時的な BLOB リースを使用して、1 つのインスタンス (ロックを取得するインスタンス) のみがシングルトン操作を実行できるようにします。アクションを実行していたインスタンスが応答しなくなった場合、リースは更新されず、別のインスタンスがすぐに処理を引き継ぐことができます。

私のブログにいくつかのサンプル コードと記事があります

于 2013-08-22T13:42:24.683 に答える
0

サービスバスベースのアプローチを試しましたか? 完了するタスクをトピックにプッシュします。インスタンスは、インスタンス番号に基づいて名前が付けられたサブスクリプションを作成できます。(RoleEnvironment.CurrentInstance.Id から取得できます)。このようにして、インスタンスが停止した場合でも、メッセージはサブスクリプションに配信され、インスタンスが復旧した後に取得されます。

サブスクリプションは、メッセージのデータに基づいてフィルタリングされたサブスクリプションにすることもできます。

いずれにせよ、単純なキューイング メカニズムは、あなたがしようとしていることとより意味的に一致する可能性があります。

于 2013-08-22T17:49:08.193 に答える