2017-05-10 12 views
1

私は、トリガーされたWebジョブと思われるWebジョブを持っています。私は紺碧に展開されており、それは誘発されたwebjobとして記載されています。しかし、私は紺碧のサービスバスに物事を追加するときにはそれが機能しています。私はUIからそれをトリガするときに動作し、私のメッセージに応答します。Azureは、空白のサービスバスにメッセージがあるときにトリガーしません。

私のホストが設定されている

この

public void ProcessQueueMessage([ServiceBusTrigger("recipetest")] ProductName message, TextWriter log) 
    { 
     //code 
    } 

のようになりますので、

var config = new JobHostConfiguration 
     { 
      JobActivator = new MyActivator(container) 
     }; 
     config.UseServiceBus(); 
     var host = new JobHost(config); 
     host.RunAndBlock(); 

私の機能のように、私は今しばらく探してきたが、すべてのGoogle検索がで連続ウェブの仕事を私に戻って与えています関数がトリガーします。誰も私の目を覚ましてメッセージを処理する方法を教えてもらえますか?私は、ほとんどの他の答えは常に上に話しているが、トリガーされた仕事は常にオンではなく動作するはずです。

+1

「常時稼働」の継続ジョブが必要です – Thomas

答えて

1

ServiceBusTriggerを使用するには、WebJobを継続する必要があります。

もう少し詳細を追加するために、ServiceBusTriggerAttributeは、メッセージが見つからない場合、バックオフを使用して監視するメッセージキューを実際にポーリングします。そのため、キューに追加されたメッセージはWebJobを「起動」せずに、何かを行うように指示します。代わりに、ServiceBusTriggerAttributeがポーリングし、新しいメッセージが処理されるのを待っています。このため、ServiceBusTriggerAttributeを使用している場合はWebJobをトリガできません。私の意見で

+0

待ち時間 - 通常のサービスバス待ち行列クライアントのように購読しませんか?ストレージ・キューにはポーリングが必要ですが、リモートで応答する場合でも実装する必要がある場合は、ポーリングはキラーです。 – Volker

+0

@Volker、それは正しいです。 ServiceBusTriggerは実際にはオープンソースであり、実際にはポーリングを介してサービスバスキューを監視していることがわかります。しかし、これは実際には大量のトラフィックを処理することができます。一度にデキューできるメッセージの数を指定できます。ポーリング間隔の最大値を指定することもできます。また、読んだときにメッセージがロックされるので、実際に調理する必要がある場合は、キューをチェックしているWebジョブインスタンスの数をダイヤルアップすることができます。 –

+0

ソースは実際にどこにありますか?私はgithubからsdkと拡張機能を入手しましたが、そこにサービスバスについては何も表示されません。交通に関しては、私の懸念はスループットではなく往復時間です。 – Volker

2

、連続webJobとトリガwebjobの違いは以下の通りです:

連続webJob:常にWebアプリケーションのバックエンドのexeファイルを実行します。

webjob SDK ServiceBusTriggerのシナリオでは、個々の機能が「トリガ」されていても、WebJobはしばらくの間実行されます(つまり、EXEが動作し続け、内部トリガを実行します)。

トリガーされたwebジョブ:スケジュールまたは手動でトリガーされます。

注意:WebjobsはすべてWebアプリケーションのプロセスによって実行され、Webアプリケーションは一定期間アイドル状態の場合はアンロードされます。これにより、システムはリソースを節約できます。

したがって、継続的および誘発型(スケジュールされたCRON)ウェブジョブでは、常に「常にオン」が必要です。

関連する問題