問題タブ [azure-webjobssdk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - Azure Webjobs を使用して、スケジュールされたタスクのパラメーターを渡すにはどうすればよいですか
Azure Web ジョブとして実行されるドット ネット コンソール アプリを作成しています。1 時間に 1 回実行されるようにスケジュールされています。
ジョブが呼び出されたときにジョブにパラメーターを渡す方法を知りたいですか?
azure-webjobssdk - Azure WebJob - パラメーターを取得し、同じ Web ジョブのインスタンスを作成します
次のシナリオがあります。いくつかのパラメーター値を取り、継続的に実行するコンソール アプリ (consoleapp.exe と呼びましょう) があります。したがって、consoleapp.exe "cars" がある場合、これによりアプリが "cars" に対して実行されます。
ここで、"animals" が必要だとしましょう' consoleapp.exe "animals" -- これにより、"animals" に対してアプリが実行されます。
基本的に、新しいパラメーター値が必要になるたびに、Web ジョブを作成して継続的に実行する必要があります。
consoleapp.exe "車" --> webjob_cars
consoleapp.exe "animals" --> webjob_animals
consoleapp.exe "ロボット" --> webjob_robots
つまり、パラメーター値が異なることを除いて、Web ジョブは実際には同じ consoleapp.exe に対して作成されます。
これを達成するにはどうすればよいですか?
azure-webjobs - WebJob からの Azure ストレージ キューのポーリング アンド スリープ
QueueTrigger
新しいメッセージがキューで利用可能になったときに呼び出されるものがあることを知っています。ただし、この「フレームワーク スタイル」の Web ジョブにより、環境を正しく初期化することが複雑になります。
これが、自分でキューをポーリングしたい理由です。基本的なパターンは次のとおりです。
私の質問は、WebJob で継続的に実行する場合、このアプローチに潜在的な問題はありますか? もしそうなら、「フレームワーク スタイル」の Web ジョブを回避するための可能な代替手段は何ですか?
編集
QueueTrigger
ビクターからのリクエストに応じて、このアプローチを使用したくない理由についての詳細を以下に示します。基本的に2つの理由があります。
1 つ目は既に上で述べたように、フレームワークがQueueTrigger
属性を持つメソッドを呼び出すという事実です。これは、すべての初期化をそのメソッドに入れる必要があることを意味します。
Web アプリには 2 段階の IoC コンテナー (アプリケーションごとおよび要求ごと) があり、Web ジョブをできるだけ Web アプリに近づけたいので、その 2 段階の IoC を使用したいと考えています。 Web ジョブでも同様です (アプリケーションごとの IoC は、すべての要求で再利用される重い初期化を行います)。この結果、静的QueueTrigger
メソッドからアクセスできるように、アプリケーションごとのコンテナーを静的変数またはシングルトンに配置する必要があります。これは、私が作りたくない設計上の癖です (IMO、Microsoft はこれをやりすぎています。たとえばThread.CurrentCulture
、それHttpContext.Current
は本当にアンチパターンであり、テスト容易性を損ないます)。
上記の状況に最適な WebJobs SDK は、インフラストラクチャ (バックオフ タイマー、ポイズン処理など) をサービスとして利用できるようにし、メインの制御フローが常にアプリケーションに残るようにします。これは、SDK のすべての機能で可能である場合とそうでない場合があります。私はそれを判断するのに十分なほど SDK を知りません。
2 つ目の理由は、開発者の利便性です。オフライン環境で作業することもある分散型チームがあります。私がこことここで読んだことから、ストレージ エミュレーターを使用して WebJob アプリケーションをローカルで実行し、メッセージをデキューする可能性はありません。私が今取っている自己ポーリングのアプローチでは、これは魅力のように機能します。
azure - Azure Webjobs の Slowcheetah 変換
私の経験では、Slowcheetah は Azure Webjobs では機能しません。
これが事実であるかどうか(またはそうでないか)についての確認を探しているだけです。
乾杯
azure - Web ジョブのシャットダウン時にストレージ テーブルを更新する
私の質問は以下の質問に似ています。
NoAutomaticTrigger タイプのジョブの継続的な Azure WebJob が停止しているときの通知
Amit のブログのアイデアを使用しましたが、ちょっとした障害にぶつかりました。
Web ジョブがポータルからシャットダウンされた場合にトリガーされるファイル ウォッチャーを Web ジョブに設定しています。
Web ジョブが終了する前に、ストレージ テーブルのいくつかのフラグを更新する必要があります。
問題は、ストレージ テーブルからレコードを取得しようとしている時点でコードが停止しているように見えることです。以下のコードの周りに例外ハンドラーがあり、コンソールに例外メッセージが書き込まれません。
以下は私のコードです
stopping_wait_time
inを 300 秒に増やしましたsettings.job
が、まだ運がありません。
azure - 集計のための Azure Web ジョブ
Azure キューと Web ジョブを使用してデータをフェッチすることにより、数千のリモート XML および JSON データ ファイルの繰り返しデータ集約のソリューションを見つけようとしています。
基本的に、Azure の Web サイト/アプリでは、何らかの入力エンドポイント URL が (パラメーターとしてデータ URL を使用して) 呼び出されます。Web ジョブのバックグラウンド ジョブをトリガーし (または、継続的に実行し、新しい作業のためにキューを定期的にチェックすることができます)、データ URL を取得し、完了時に外部エンドポイント URL をコールバックする必要があります。
現在の主な関心事は、ボリュームとそのパフォーマンス/スケーリング/価格設定のオーバーヘッドです。10 ~ 60 分ごとに約 10,000 の URL が取得されます (ほとんどの URL は 60 分ごとに取得されます)。大量のバックグラウンド ジョブが繰り返されるこのシナリオに関して、いくつか質問があります。
Azure WebJobs (またはワーカー?) は、この量のバックグラウンド処理の適切なオプションであり、それに応じてスケーリングできますか?
この種のボリュームの場合、どの Azure Web サイト レベルが最も適しているでしょうか ( http://azure.microsoft.com/en-us/pricing/details/app-service/で比較)? それとも、この規模で機能するのはクラウドまたは VM だけですか?
提案やヒントをいただければ幸いです。
c# - Azure WebJobs 非同期関数でのトランザクション サポート
.NET Framework 4.5.1 では、非同期メソッドでのトランザクション サポートが導入されました。次に例を示します。
参照: https://msdn.microsoft.com/en-us/library/dn261473(v=vs.110).aspx
これを Azure WebJobs 非同期関数でも使用して、作業単位を強化し、ホストがシャットダウンした場合により優れたべき等操作を提供できますか? もしそうなら、それはパフォーマンスに何らかの影響を与えますか?
アップデート:
トランザクション (単一レベル) は Service Bus キュー (スタンダード レベル) でサポートされていますが、ストレージ キューではサポートされていないようです。参照: https://msdn.microsoft.com/en-us/library/azure/hh767287.aspxの「基本機能」セクション
azure-web-app-service - Azure WebApps (以前の WebSites) では、実行中のインスタンス数を取得できますか?
Azure Tables でデータを処理するための Azure WebJob を作成していますが、WebSite のインスタンスが複数ある場合 (つまり、WebSite がスケールアウトされている場合)、処理の同期を使用する必要があります。
インフラストラクチャからそのような情報を取得できますか (現在実行されている WebApp のインスタンスの数)?