質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

2回答

4637閲覧

Azure Webjob SDKで、実行中の処理が終わらないうちに次の処理が始まってしまう。

usugita_san

総合スコア221

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2017/03/22 09:28

AzureのWebjobについての質問です。以下のURLを参考にしています。
https://docs.microsoft.com/ja-jp/azure/app-service-web/websites-dotnet-webjobs-sdk

以下のソースですと、「webjobsqueue」のキューにメッセージが追加されたら、実行されます。

C#

1 public static void Main() 2 { 3 JobHost host = new JobHost(); 4 host.RunAndBlock(); 5 } 6 7 public static void ProcessQueueMessage([QueueTrigger("webjobsqueue")] string inputText, 8 [Blob("containername/blobname")]TextWriter writer) 9 { 10 writer.WriteLine(inputText); 11 }

この時、実行がまだ終わらないうちに次のメッセージを追加すると、前回の処理が終了していないのに、次の処理が開始されてしまいます。
例えば、「writer.WriteLine(inputText);」の後にsleepを入れてみます。

C#

1 public static void Main() 2 { 3 JobHost host = new JobHost(); 4 host.RunAndBlock(); 5 } 6 7 public static void ProcessQueueMessage([QueueTrigger("webjobsqueue")] string inputText, 8 [Blob("containername/blobname")]TextWriter writer) 9 { 10 writer.WriteLine(inputText); 11 System.Threading.Thread.Sleep(10000); 12 writer.WriteLine("処理終わったよ"); 13 }

この時、キューにメッセージを2回入れると、1回目の処理が終わらないうちに2回目の処理が走る事が解ります。

このような場合、1度目の処理が終了するまで次のキューを受け取らないというような事は可能でしょうか?
1回ずつちゃんと終わってから次の処理をやってほしい・・・なんて事は出来るのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

WebJobはデフォルトで16個のバッチが並列稼動しているので同時に16個のキューを処理するようになっています。
QueueTriggerのConfig設定で同時実行のバッチ数を1にすればキューを1個づつ処理するようになると思います。

C#

1static void Main(string[] args) 2{ 3 JobHostConfiguration config = new JobHostConfiguration(); 4 config.Queues.BatchSize = 1; 5 JobHost host = new JobHost(config); 6 host.RunAndBlock(); 7}

詳細は下記のサイトの「QueueTrigger 設定の構成」を参照してください。

Web ジョブ SDK を使用して Azure キュー ストレージを操作する方法

投稿2017/03/23 02:11

kingkinoko

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usugita_san

2017/03/23 05:41

ありがとうございます。ご紹介いただいたドキュメントを呼んで、もう一度チャレンジしてみます。
guest

0

あまり専門ではないので、充分な回答になっていませんが、

Kuduに用意されたAPIを使って任意のタイミングでのWebJob実行を制御できるようです。

Azure WebJobs の開発と運用時に便利な情報をまとめた

専門の方からの回答までの参考になれば。

投稿2017/03/22 09:51

iss

総合スコア506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問