Azure Storage Queue からトリガーする必要がある Azure WebJobs QueueTrigger メソッドに関して、私が間違っていることを見つけようとしています。
いくつかのドキュメントを読みました (ブログの投稿や msdn の記事など)。しかし、私はまだ明確ではありません。
主な質問/誤解されている側面:
Azure ストレージ コンソール アプリ App.config または Windows Azure 構成 (ポータル) の接続文字列の名前は何ですか。これまでのところ、両方の場所に次の名前を設定しています。
- Azureジョブストレージ
- AzureWebジョブストレージ
- Azureジョブランタイム
- Azureジョブダッシュボード
- AzureJobsData
これが私の WebJobs コンソール アプリ コードです。
static void Main()
{
JobHost host = new JobHost();
host.RunAndBlock();
}
public static void CreateLeague([QueueTrigger("temp")] string msg)
{
var task = JsonConvert.DeserializeObject<QueueTask>(msg);
if (task.TaskType == QueueTask.TaskTypes.Pdf)
RenderPdf(task.Id);
}
このコンソール アプリは、Azure Web サイトで継続的に実行されています。
出力を切り替えることができる「デバッグ」ページにアクセスでき、起動/実行されていることがわかります。
キューを追加するコード (ASP.NET MVC アプリから):
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("temp");
queue.CreateIfNotExists();
Common.QueueTask task = new Common.QueueTask();
task.TaskType = Common.QueueTask.TaskTypes.Pdf;
task.Id = p.Id;
CloudQueueMessage msg = new CloudQueueMessage(JsonConvert.SerializeObject(task) );
queue.AddMessage(msg);
このコードが実行され、ストレージ アカウントにキューが追加されます。しかし、それらは Web ジョブから「デキュー」または読み取りを取得しませんでした。