1. บทนำ
Cloud Tasks เป็นบริการจัดคิวที่มีการจัดการครบวงจรสำหรับการจัดการการดำเนินการ การมอบหมายงาน และการส่งมอบงานจำนวนมาก
Cloud Tasks ช่วยให้คุณแยกงานที่เรียกว่างานซึ่งสามารถดำเนินการได้อย่างอิสระ (เช่น งานเพื่ออัปเดตรายการฐานข้อมูล) นอกโฟลว์หลักของแอปพลิเคชัน และส่งงานเหล่านั้นไปประมวลผลแบบไม่พร้อมกันโดยใช้เครื่องจัดการที่คุณสร้าง
ระบบจะเพิ่มงานที่ปิดไปแล้วลงในคิว ซึ่งจะคงงานไว้จนกว่าจะดำเนินการสำเร็จหรือไม่สำเร็จ คิวยังทำหน้าที่เป็นตัวควบคุมโฟลว์การจ่ายงานได้ด้วย ทั้งนี้ขึ้นอยู่กับการกำหนดค่า คุณจะสร้างและกำหนดค่าคิว ซึ่งจะได้รับการจัดการโดยบริการ Cloud Tasks ต่อไป เมื่อเพิ่มงานแล้ว คิวจะมอบหมายงานและตรวจสอบให้ผู้ปฏิบัติงานประมวลผลงานดังกล่าวได้อย่างน่าเชื่อถือ
ฟีเจอร์หลักบางอย่างของ Cloud Tasks ได้แก่
- เป้าหมาย HTTP: เพิ่มงานที่กำหนดเป้าหมายบริการ HTTP ที่ทำงานอยู่บน Compute Engine, Google Kubernetes Engine, Cloud Run, Cloud Functions หรือระบบภายในองค์กรเพื่อความปลอดภัยโดยใช้การตรวจสอบสิทธิ์ OAuth/OIDC ตามมาตรฐานอุตสาหกรรม
- การกรองงานที่ซ้ำกันออก: งานที่เพิ่มหลายครั้งจะส่งออกเพียงครั้งเดียว
- รับประกันการส่ง: งานจะได้รับการรับประกันว่าจะมีการนำส่งอย่างน้อย 1 ครั้ง และงานส่วนใหญ่จะส่งเพียงครั้งเดียว
- การควบคุมอัตราและการลองใหม่: ควบคุมการดำเนินการโดยการตั้งค่าอัตราการจ่ายงาน จำนวนครั้งสูงสุด และระยะเวลาขั้นต่ำในการรอระหว่างการดำเนินการแต่ละครั้ง
- การตั้งเวลาในอนาคต: ควบคุมเวลาที่จะทำงาน
ใน Codelab นี้ คุณจะได้ดูวิธีสร้างและใช้คิว Cloud Tasks ปกติสำหรับงานเป้าหมาย HTTP ก่อน จากนั้น คุณจะได้ดูวิธีใช้การลบล้าง HTTP URI ระดับคิวและ BufferTask API ใหม่เพื่อบัฟเฟอร์คำขอ HTTP กับ Cloud Tasks ได้ง่ายขึ้น
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างงานเป้าหมาย HTTP
- วิธีสร้างงานเป้าหมาย HTTP ด้วยการลบล้าง URI ของ HTTP ระดับคิวใหม่
- วิธีเปลี่ยนงานที่รอดำเนินการด้วยการลบล้าง HTTP URI ระดับคิวใหม่
- วิธีบัฟเฟอร์คำขอ HTTP ที่ง่ายขึ้นด้วย BufferTask API ใหม่
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตวิธีการชำระเงินได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในทุกโปรเจ็กต์ของ Google Cloud และจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID
) หากคุณไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอื่นได้ หรือคุณจะลองดำเนินการเองแล้วดูว่าพร้อมให้ใช้งานหรือไม่ คุณจะเปลี่ยนแปลงหลังจากขั้นตอนนี้ไม่ได้และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - สำหรับข้อมูลของคุณ ค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่นอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud ใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน ดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดใน Codelab นี้ทำได้ในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไรเลย
3. สร้างคิวปกติสำหรับงานเป้าหมาย HTTP
ในขั้นตอนแรก คุณจะได้ดูวิธีสร้างคิว Cloud Tasks ปกติและเพิ่มงาน HTTP ลงในคิวเพื่อกำหนดเป้าหมายบริการ Cloud Run
งานเป้าหมาย HTTP คืออะไร
งานเป้าหมาย HTTP สามารถกำหนดเป้าหมายบริการ HTTP ทั้งหมดที่ทำงานอยู่บน Compute Engine, Google Kubernetes Engine, Cloud Run, Cloud Functions หรือระบบภายในองค์กรได้อย่างปลอดภัยโดยใช้การตรวจสอบสิทธิ์ OAuth/OIDC มาตรฐานอุตสาหกรรม
ทำให้บริการ Cloud Run ใช้งานได้
ก่อนอื่นให้ตรวจสอบว่าได้เปิดใช้ API ที่จำเป็นแล้ว โดยทำดังนี้
gcloud services enable \ cloudtasks.googleapis.com \ run.googleapis.com
ทำให้บริการ Cloud Run ใช้งานได้ซึ่งจะทำหน้าที่เป็นเป้าหมายของงาน HTTP:
SERVICE1=hello1 REGION=us-central1 gcloud run deploy $SERVICE1 \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
สร้างคิว Cloud Tasks
สร้างคิว Cloud Tasks ปกติได้ดังนี้
QUEUE1=http-queue LOCATION=us-central1 gcloud tasks queues create $QUEUE1 --location=$LOCATION
หยุดคิวชั่วคราวเพื่อให้คุณดูงาน HTTP ขณะสร้างได้ ดังนี้
gcloud tasks queues pause $QUEUE1 --location=$LOCATION
4. สร้างและทดสอบงาน HTTP
ในขั้นตอนนี้ คุณจะได้สร้างงาน HTTP เพื่อกำหนดเป้าหมายคิวที่คุณสร้างขึ้นก่อนหน้านี้
สร้างงาน HTTP
คุณสร้างงาน HTTP ได้โดยใช้ gcloud
gcloud tasks create-http-task \ --queue=$QUEUE1 \ --location=$LOCATION \ --url=$SERVICE1_URL \ --method=GET
ไม่บังคับ: คุณสร้างงาน HTTP ด้วยไลบรารีของไคลเอ็นต์ได้ด้วย ตัวอย่างเช่น คุณสามารถดู Program.cs
สำหรับตัวอย่าง C# ที่คำขอ HTTP รวมอยู่ใน Task
และ TaskRequest
ก่อนที่จะส่งไปยัง Cloud Tasks ด้วย CloudTasksClient
:
var taskRequest = new CreateTaskRequest { Parent = new QueueName(projectId, location, queue).ToString(), Task = new Task { HttpRequest = new HttpRequest { HttpMethod = HttpMethod.Get, Url = url } } }; var client = CloudTasksClient.Create(); var response = client.CreateTask(taskRequest);
คุณสามารถเรียกใช้ไฟล์เพื่อสร้างและเพิ่มงานลงในคิวได้ดังนี้
dotnet run $PROJECT_ID $LOCATION $QUEUE1 $SERVICE1_URL
ทดสอบงาน HTTP
ที่จุดนี้ ระบบจะสร้างงานขึ้น แต่ยังไม่มีการดำเนินการเนื่องจากคิวหยุดชั่วคราว คุณยืนยันการดำเนินการนี้ได้โดยแสดงรายการคิว
gcloud tasks queues list --location=$LOCATION
คุณควรเห็นคิวในสถานะ PAUSED
:
QUEUE_NAME STATE http-queue PAUSED
ทำให้คิวกลับมาทำงานอีกครั้งโดยทำดังนี้
gcloud tasks queues resume $QUEUE --location=$LOCATION
ตรวจสอบบันทึกของบริการ Cloud Run ดังนี้
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE1" --limit 1
คุณควรเห็นว่าบริการ Cloud Run ได้รับคำขอ HTTP GET จาก Cloud Tasks
httpRequest: latency: 0.227597158s protocol: HTTP/1.1 remoteIp: 35.243.23.192 requestMethod: GET requestSize: '415' requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/ responseSize: '5510' serverIp: 216.239.32.53 status: 200 userAgent: Google-Cloud-Tasks
5. สร้างคิวที่มีการกำหนดค่าการกำหนดเส้นทาง
ในขั้นตอนนี้ คุณจะได้ดูวิธีสร้างคิวงานระบบคลาวด์ด้วยการกำหนดค่าการกำหนดเส้นทางเพื่อเพิ่มการลบล้าง HTTP URI โดยใช้ฟีเจอร์การกำหนดค่าการกำหนดเส้นทางงานระดับคิว จากนั้นเพิ่มงาน HTTP เพื่อกำหนดเป้าหมายบริการ Cloud Run แรกและสังเกตว่าการกำหนดค่าการกำหนดเส้นทางลบล้าง URI เพื่อกำหนดเส้นทางงานไปยังบริการ Cloud Run ที่ 2
การกำหนดค่าการกำหนดเส้นทางงานระดับคิวคืออะไร
การกำหนดค่าการกำหนดเส้นทางงานระดับคิวจะเปลี่ยนเส้นทางงาน HTTP สำหรับคิวทั้งหมดสำหรับงานที่รอดำเนินการและงานใหม่ทั้งหมด ซึ่งช่วยให้สร้างงานได้ง่ายขึ้น เนื่องจากไม่จำเป็นต้องกำหนดเป้าหมาย HTTP ที่ระดับงานและจะเปลี่ยนการควบคุมไปยังผู้ให้บริการมากขึ้นเนื่องจากสามารถกำหนดเป้าหมายของงานทั้งหมดในคิวได้ (เช่น กำหนดเส้นทางการรับส่งข้อมูลไปยังแบ็กเอนด์อื่นหากแบ็กเอนด์เดิมหยุดทำงาน)
การกำหนดค่าต่อไปนี้สามารถตั้งค่าที่ระดับคิว
- ส่วนหัว: เมื่อระบุไว้ที่ระดับคิวแล้ว: ส่วนหัวระดับคิวจะเสริมส่วนหัวสำหรับงานทั้งหมดในคิว
- เมธอด HTTP: เมธอด HTTP เมื่อระบุที่ระดับคิว จะลบล้างเมธอด HTTP สำหรับงานทั้งหมดในคิว
- URL เป้าหมาย: สามารถลบล้างโฮสต์ เส้นทาง คำค้นหา พอร์ต ชุดรูปแบบ (HTTP หรือ HTTPS) ทีละรายการได้
- การให้สิทธิ์: การกำหนดค่า OIDC/OAuth เมื่อระบุไว้ที่ระดับคิวจะลบล้างการกำหนดค่า OIDC/OAuth ระดับงาน
ทำให้บริการ Cloud Run ที่ 2 ใช้งานได้
ทำให้บริการ Cloud Run ที่ 2 ใช้งานได้ซึ่งจะเป็นเป้าหมายของการลบล้าง HTTP URI ในภายหลัง:
SERVICE2=hello2 REGION=us-central1 gcloud run deploy $SERVICE2 \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
บันทึกโฮสต์ของ URL บริการเพื่อใช้ในภายหลัง:
SERVICE2_URL=$(gcloud run services describe $SERVICE2 --region $REGION --format 'value(status.url)') SERVICE2_HOST=$(echo $SERVICE2_URL | sed 's,http[s]*://,,g')
สร้างคิว Cloud Tasks ที่มีการกำหนดค่าการกำหนดเส้นทาง
สร้างคิวที่มีการกำหนดค่าการกำหนดเส้นทางพร้อมการลบล้าง HTTP URI ไปยังบริการ Cloud Run ที่ 2
QUEUE2=http-queue-uri-override gcloud beta tasks queues create $QUEUE2 \ --http-uri-override=host:$SERVICE2_HOST \ --location=$LOCATION
โปรดทราบว่าการลบล้าง URI จะหมายถึงบริการ Cloud Run ที่ 2 งาน HTTP ที่เพิ่มลงในคิวจะมีการลบล้างโฮสต์ URI เดิม คุณดูการกำหนดค่าคิวได้โดยทำดังนี้
gcloud beta tasks queues describe $QUEUE2 --location=$LOCATION
คุณควรเห็นว่า httpTarget
มี uriOverride
ที่ชี้ไปยังโฮสต์ของบริการที่ 2:
httpTarget: uriOverride: host: hello2-idcwffc3yq-uc.a.run.app pathOverride: {} queryOverride: {} ...
หยุดคิวชั่วคราวเพื่อให้คุณดูงาน HTTP ขณะสร้างได้ ดังนี้
gcloud tasks queues pause $QUEUE2 --location=$LOCATION
6. สร้างและทดสอบงาน HTTP สำหรับคิวด้วยการกำหนดค่าการกำหนดเส้นทาง
ในขั้นตอนนี้ คุณจะสร้างงาน HTTP เพื่อกำหนดเป้าหมายบริการแรกและสังเกตว่าคิวลบล้าง URI ของบริการเพื่อชี้ไปยังบริการที่สอง
สร้างงาน HTTP
สร้างงาน HTTP ด้วย URL ของบริการแรก ดังนี้
gcloud tasks create-http-task \ --queue=$QUEUE2 \ --location=$LOCATION \ --url=$SERVICE1_URL \ --method=GET
ทดสอบงาน HTTP
ทำให้คิวกลับมาทำงานอีกครั้งโดยทำดังนี้
gcloud tasks queues resume $QUEUE2 --location=$LOCATION
คุณควรเห็นว่าบริการ Cloud Run ที่ 2 (ไม่ใช่รายการแรก) ได้รับคำขอ HTTP GET จาก Cloud Tasks เนื่องจากการลบล้าง:
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE2" --limit 1
--- httpRequest: latency: 0.228982142s protocol: HTTP/1.1 remoteIp: 35.187.132.84 requestMethod: GET requestSize: '426' requestUrl: https://hello2-idcwffc3yq-uc.a.run.app/ responseSize: '5510' serverIp: 216.239.34.53 status: 200 userAgent: Google-Cloud-Tasks
7. เปลี่ยนงานที่รอดำเนินการด้วยการกำหนดค่าการกำหนดเส้นทาง
คุณใช้การกำหนดค่าการกำหนดเส้นทางเพื่อเปลี่ยน HTTP URI ของงานที่รอดำเนินการทั้งหมดในคิวได้ด้วย วิธีนี้มีประโยชน์หากบริการแบ็กเอนด์หยุดทำงานและคุณต้องการกำหนดเส้นทางไปยังบริการอื่นอย่างรวดเร็ว มาดูวิธีการทำงานของขั้นตอนนี้กัน
หยุดคิวชั่วคราวอีกครั้งโดยทำดังนี้
gcloud tasks queues pause $QUEUE2 --location=$LOCATION
สร้างงาน HTTP ที่มี google.com
เป็น URL ของงาน
gcloud tasks create-http-task \ --queue=$QUEUE2 \ --location=$LOCATION \ --url=https://www.google.com \ --method=GET
งานอยู่ในสถานะรอดำเนินการเนื่องจากคิวหยุดชั่วคราว
ตอนนี้ ให้อัปเดตการลบล้าง HTTP URI ให้ชี้ไปยังบริการแรก การดำเนินการนี้จะลบล้างโฮสต์ของงานที่รอดำเนินการจาก google.com
เป็นโฮสต์ของบริการแรก
SERVICE1_URL=$(gcloud run services describe $SERVICE1 --region $REGION --format 'value(status.url)') SERVICE1_HOST=$(echo $SERVICE1_URL | sed 's,http[s]*://,,g') gcloud beta tasks queues update $QUEUE2 \ --http-uri-override=host:$SERVICE1_HOST \ --location=$LOCATION
ทำให้คิวกลับมาทำงานอีกครั้งโดยทำดังนี้
gcloud tasks queues resume $QUEUE2 --location=$LOCATION
คุณควรเห็นว่าบริการ Cloud Run แรกได้รับคำขอ HTTP GET จาก Cloud Tasks เนื่องจากการลบล้าง (แทนที่จะเป็น google.com
) ดังนี้
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE1" --limit 1 --- httpRequest: latency: 0.228982142s protocol: HTTP/1.1 remoteIp: 35.187.132.84 requestMethod: GET requestSize: '426' requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/ responseSize: '5510' serverIp: 216.239.34.53 status: 200 userAgent: Google-Cloud-Tasks
8. สร้างคิวสำหรับ BufferTask API
โดยปกติ คุณจะสร้างงานโดยใช้ Tasks API จากไลบรารีของไคลเอ็นต์ gcloud
หรือ Tasks ซึ่งจะสร้างภาระให้แอปพลิเคชันรวมคำขอ HTTP ไว้ใน Tasks โดยใช้ไลบรารีของไคลเอ็นต์ และยังสร้างทรัพยากร Dependency ระหว่างแอปพลิเคชันและไลบรารีของไคลเอ็นต์ Tasks อีกด้วย
ในขั้นตอนนี้ คุณจะเห็นวิธีใช้ประโยชน์จากการลบล้าง URI ของ HTTP ระดับคิวและ BufferTask API ใหม่เพื่อสร้างงานเป้าหมาย HTTP ได้ง่ายขึ้นโดยเพียงแค่ส่งคำขอ HTTP ตอนนี้แอปพลิเคชันใดก็ตามที่ส่งคำขอ HTTP สามารถสร้างงานเป้าหมาย HTTP ได้แล้ว
BufferTask API คืออะไร
CreateTask API เป็นวิธีเก่าในการสร้าง Tasks และกำหนดให้ไคลเอ็นต์ส่งออบเจ็กต์งานไปยัง API โดยมีชุดช่องที่ต้องกรอกทั้งหมด
BufferTask API เป็นฟีเจอร์ใหม่ที่ช่วยให้ผู้ใช้สร้างงาน HTTP ได้โดยไม่ต้องระบุการกำหนดค่างาน (HTTP URL, ส่วนหัว, การให้สิทธิ์) ซึ่งช่วยให้คุณส่งข้อความหรือเนื้อหาคำขอไปยัง Buffer API ได้ง่ายๆ
ซึ่งจะทำให้ผสานรวมกับบริการได้ง่ายขึ้นเนื่องจากตอนนี้คุณสามารถทำให้ Cloud Tasks ใช้งานได้ที่ด้านหน้าบริการของคุณโดยไม่ต้องเปลี่ยนแปลงโค้ดใดๆ ในฝั่งไคลเอ็นต์ คำขอ HTTP ที่กําหนดเองซึ่งส่งไปยัง BufferTask API จะได้รับการรวมเป็นออบเจ็กต์งานและส่งไปยังปลายทางซึ่งกำหนดไว้ที่ระดับคิว
หากต้องการใช้ BufferTask API คิวจะต้องมีการตั้งค่า URI เป้าหมาย หรือกล่าวอีกอย่างคือ ฟีเจอร์การกำหนดค่าการกำหนดเส้นทางระดับคิวเป็นข้อกำหนดเบื้องต้นสำหรับการใช้ BufferTask API
สร้างคิว Cloud Tasks ที่มีการกำหนดค่าการกำหนดเส้นทาง
สร้างคิวที่มีการกำหนดค่าการกำหนดเส้นทางชี้ไปยังบริการแรกที่เราปรับใช้ในขั้นตอนก่อนหน้า
SERVICE1=hello1 SERVICE1_URL=$(gcloud run services describe $SERVICE1 --region $REGION --format 'value(status.url)') SERVICE1_HOST=$(echo $SERVICE1_URL | sed 's,http[s]*://,,g') QUEUE3=http-queue-uri-override-buffer gcloud beta tasks queues create $QUEUE3 \ --http-uri-override=host:$SERVICE1_HOST \ --location=$LOCATION
หยุดคิวชั่วคราวเพื่อให้คุณดูงาน HTTP ขณะสร้างได้ ดังนี้
gcloud tasks queues pause $QUEUE3 --location=$LOCATION
9. บัฟเฟอร์คำขอ HTTP ด้วย BufferTask API
ในขั้นตอนนี้ คุณจะบัฟเฟอร์คำขอ HTTP GET หรือ POST แบบง่ายด้วย BufferTask API ในส่วนหน้าปก Cloud Tasks จะรวมคำขอ HTTP เหล่านี้ไว้ในงาน HTTP ด้วยการตั้งค่าการกำหนดเส้นทางเริ่มต้นของคิว
ขั้นแรก ให้เข้าสู่ระบบเพื่อรับโทเค็นเพื่อการเข้าถึง แล้วตั้งตัวแปร ดังนี้
gcloud auth application-default login ACCESS_TOKEN=$(gcloud auth application-default print-access-token) PROJECT_ID=$(gcloud config get-value project) TASKS_QUEUES_API="https://cloudtasks.googleapis.com/v2beta3/projects/$PROJECT_ID/locations/$LOCATION/queues"
สร้างงาน HTTP
สร้างงาน HTTP ด้วย BufferTask API โปรดสังเกตว่านี่เป็นคำขอ HTTP GET ง่ายๆ โดยไม่ต้องสร้างงาน ดังนี้
curl -X GET "$TASKS_QUEUES_API/$QUEUE3/tasks:buffer" \ -H "Authorization: Bearer $ACCESS_TOKEN"
สร้างงาน HTTP อื่นด้วย HTTP POST และเนื้อหาต่อไปนี้
curl -X POST "$TASKS_QUEUES_API/$QUEUE3/tasks:buffer" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d "{'message': 'Hello World'}"
ไม่บังคับ: คุณสร้างงาน HTTP ด้วยไลบรารีของไคลเอ็นต์ได้ด้วย ตัวอย่างเช่น คุณสามารถดู Program.cs
เพื่อดูตัวอย่าง C# ที่มีการส่งคำขอ HTTP GET ไปยัง BufferTask API โดยตรงโดยไม่ต้องรวมไว้ใน Task
หรือต้องการไลบรารี Client-Library สำหรับ Cloud Tasks
var BufferTaskApiUrl = $"https://cloudtasks.googleapis.com/v2beta3/projects/{ProjectId}/locations/{Location}/queues/{Queue}/tasks:buffer"; using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", $"Bearer {AccessToken}"); var response = await client.GetAsync(BufferTaskApiUrl); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response: {content}"); }
คุณสามารถเรียกใช้โค้ดโดยทำดังนี้
dotnet run $PROJECT_ID $LOCATION $QUEUE3 $ACCESS_TOKEN
BufferTask API ดูแลการสร้างงานจากคำขอ HTTP และเพิ่ม URL จากการตั้งค่าการกำหนดเส้นทางของคิวสำหรับ URI
ทดสอบงาน HTTP
ทำให้คิวกลับมาทำงานอีกครั้งโดยทำดังนี้
gcloud tasks queues resume $QUEUE3 --location=$LOCATION
คุณควรเห็นว่าบริการ Cloud Run ได้รับคำขอ HTTP GET และ POST จาก Cloud Tasks
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE1" --limit 4
--- httpRequest: latency: 0.002279292s protocol: HTTP/1.1 remoteIp: 35.243.23.42 requestMethod: POST requestSize: '777' requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/ responseSize: '5450' serverIp: 216.239.32.53 status: 200 userAgent: Google-Cloud-Tasks ... httpRequest: latency: 0.228982142s protocol: HTTP/1.1 remoteIp: 35.187.132.84 requestMethod: GET requestSize: '426' requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/ responseSize: '5510' serverIp: 216.239.34.53 status: 200 userAgent: Google-Cloud-Tasks
10. ขอแสดงความยินดี
ยินดีด้วย คุณศึกษา Codelab จบแล้ว
เพื่อเป็นการติดตามผล คุณสามารถลอง Cloud Tasks เป็นบัฟเฟอร์ระหว่าง Pub/Sub และ Cloud Run เพื่อดูตัวอย่างการใช้งานจริงว่าฟีเจอร์ใหม่ของ Cloud Tasks เหล่านี้จะช่วยให้สร้างคิวบัฟเฟอร์ระหว่างบริการได้อย่างง่ายดายอย่างไร
ทำความสะอาด (ไม่บังคับ)
คุณควรล้างทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงิน
หากคุณไม่ต้องการใช้โปรเจ็กต์ ก็ลบโปรเจ็กต์ได้เลย โดยทำดังนี้
gcloud projects delete $PROJECT_ID
หากต้องการใช้โปรเจ็กต์ คุณจะลบทรัพยากรทีละรายการได้
ลบบริการ Cloud Run ดังนี้
gcloud run services delete $SERVICE1 --region $REGION gcloud run services delete $SERVICE2 --region $REGION
ลบคิว Cloud Tasks
gcloud tasks queues delete $QUEUE1 --location=$LOCATION gcloud tasks queues delete $QUEUE2 --location=$LOCATION gcloud tasks queues delete $QUEUE3 --location=$LOCATION
สรุปประเด็นที่ได้พูดถึง
- วิธีสร้างงานเป้าหมาย HTTP
- วิธีสร้างงานเป้าหมาย HTTP ด้วยการลบล้าง URI ของ HTTP ระดับคิวใหม่
- วิธีเปลี่ยนงานที่รอดำเนินการด้วยการลบล้าง HTTP URI ระดับคิวใหม่
- วิธีบัฟเฟอร์คำขอ HTTP ที่ง่ายขึ้นด้วย BufferTask API ใหม่