在這篇文章,我們將做一個簡單的實作,輸出與我興趣相符的會員的簡介到Queue裡面,等待郵件服務排成來發送(郵件服務將在下一篇進行介紹)
點選儲存後會幫我們建立這個Queue喔
方才我們已經Bind好Queue輸出的位置(outputQueueItem)
run.csx裡,加上outputQueueItem的輸出參數
IAsyncCollector<Member> outputQueueItem
run.csx裡,這行程式碼將資料到Queue裡面
await outputQueueItem.AddAsync(m);
可以看到function.json的binding值(剛才設定輸出時,設定完成後自動加入)
{
"type": "queue",
"name": "outputQueueItem",
"queueName": "memberhobby",
"connection": "AzureWebJobsStorage",
"direction": "out"
}
using System;
using System.Net;
using System.Collections.Generic;
public class Member{
public string name { get; set; }
public string hobby { get; set; }
public Member(string n, string h){
name = n;
hobby = h;
}
}
//這裡我們多加了一個參數,IAsyncCollector<Member> outputQueueItem
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log, IAsyncCollector<Member> outputQueueItem)
{
log.Info("C# HTTP trigger 開始比對興趣");
string name = "";
string hobby = "";
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
hobby = data?.hobby;
List<string> hobby_list = hobby.Split(',').ToList();
List<string> matched_hobbies = new List<string> { "棒球", "游泳", "旅遊" };
List<string> matched_list = hobby_list.Intersect(matched_hobbies).ToList();
//找到相符的興趣
string matched_hobby = String.Join(", ", matched_list.ToArray());
log.Info(matched_hobby);
if(matched_list.Count != 0){
Member m = new Member(name,hobby);
//這裡我們送了Member格式的資料到Queue裡面
await outputQueueItem.AddAsync(m);
}
return req.CreateResponse(HttpStatusCode.OK, "新會員" + name + "她的興趣是" + hobby + ", 相符的興趣是"+matched_hobby);
}
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log, IAsyncCollector<Member> outputQueueItem)
最右邊的參數[IAsyncCollector outputQueueItem],是我們用來Bind Queue的輸出
事實上輸出可以有很多類型,例如可以有以下寫法
但因為我們此次使用非同步程式碼(async),則不允許使用 out 參數,因此我們需使用 IAsyncCollector
快速連結:(實作)打造工程師交友小工具-串接第三方寄信API(上篇)