التخزين المؤقت لطلبات HTTP باستخدام "مهام Cloud"

1. مقدمة

c6ac6ed05292f13e.png

‫Cloud Tasks هي خدمة إدارة قوائم انتظار مُدارة بالكامل لإدارة تنفيذ عدد كبير من المهام وإرسالها وتسليمها.

تتيح لك Cloud Tasks فصل أجزاء العمل، التي تُعرف باسم المهام، والتي يمكن تنفيذها بشكل مستقل (مثل مهمة لتعديل إدخال في قاعدة بيانات)، خارج مسار تطبيقك الرئيسي، وإرسالها ليتم معالجتها بشكل غير متزامن باستخدام معالِجات تنشئها.

تتم إضافة المهمة التي تم نقلها إلى قائمة انتظار، والتي تحتفظ بالمهمة إلى أن يتم تنفيذها بنجاح أو يحدث خطأ. استنادًا إلى الإعداد، يمكن أن يعمل قائمة الانتظار أيضًا كعنصر تحكّم في تدفّق البيانات للإرسال. يمكنك إنشاء قائمة الانتظار وضبطها، ثم تتولّى خدمة Cloud Tasks إدارتها. بعد إضافة المهام، يرسل الصف المهام ويتأكّد من أنّ العاملين يعالجونها بشكل موثوق.

d59ffe8d34138c88.png

في ما يلي بعض الميزات الرئيسية في Cloud Tasks:

  • استهداف HTTP: يمكنك إضافة مهام تستهدف أي خدمة HTTP تعمل على Compute Engine أو Google Kubernetes Engine أو Cloud Run أو Cloud Functions أو الأنظمة المحلية بطريقة آمنة باستخدام مصادقة OAuth/OIDC المتوافقة مع معايير المجال.
  • إزالة المهام المكرّرة: لن يتم إرسال المهام التي تمت إضافتها عدة مرات إلا مرة واحدة.
  • التسليم المضمون: يتم تسليم المهام مرة واحدة على الأقل، ويتم تسليم معظم المهام مرة واحدة بالضبط.
  • عناصر التحكّم في المعدّل وإعادة المحاولة: يمكنك التحكّم في التنفيذ من خلال ضبط المعدّل الذي يتم به إرسال المهام، والحد الأقصى لعدد المحاولات، والحد الأدنى للوقت المطلوب انتظاره بين المحاولات.
  • الجدولة المستقبلية: يمكنك التحكّم في الوقت الذي يتم فيه تنفيذ مهمة.

في هذا الدرس التطبيقي حول الترميز، ستتعرّف أولاً على كيفية إنشاء واستخدام قائمة انتظار عادية في Cloud Tasks لمهام تستهدف HTTP. بعد ذلك، ستتعرّف على كيفية استخدام إلغاء معرّف الموارد المنتظم (URI) لبروتوكول HTTP على مستوى قائمة الانتظار وواجهة برمجة التطبيقات الجديدة BufferTask API لتخزين طلبات HTTP مؤقتًا بسهولة أكبر باستخدام Cloud Tasks.

أهداف الدورة التعليمية

  • كيفية إنشاء مهام تستهدف HTTP
  • كيفية إنشاء مهام تستهدف HTTP باستخدام الإعداد الجديد لتجاوز معرّف الموارد المنتظم (URI) على مستوى قائمة الانتظار
  • كيفية تغيير المهام المعلّقة باستخدام الإعداد الجديد لتجاوز معرّف الموارد المنتظم (URI) على مستوى قائمة الانتظار
  • كيفية تخزين طلبات HTTP مؤقتًا بسهولة أكبر باستخدام واجهة برمجة التطبيقات BufferTask الجديدة

2. الإعداد والمتطلبات

إعداد بيئة الاختبار الذاتي

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
  • رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم آخر عشوائي. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة ويظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع، وتستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير، إن وُجدت أي تكلفة. لإيقاف الموارد وتجنُّب تحمّل تكاليف فوترة تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

55efc1aaa7a4d3ad.png

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

7ffe5cbb04455448.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. لست بحاجة إلى تثبيت أي تطبيق.

3- إنشاء قائمة انتظار عادية لمهام استهداف HTTP

في هذه الخطوة الأولى، ستتعرّف على كيفية إنشاء قائمة انتظار عادية في Cloud Tasks وإضافة مهام HTTP إليها لاستهداف إحدى خدمات Cloud Run.

d4f09a342c8eab.png

ما هي مهام استهداف HTTP؟

يمكن أن تستهدف مهام HTTP أي خدمة HTTP تعمل على Compute Engine أو Google Kubernetes Engine أو Cloud Run أو Cloud Functions أو الأنظمة المحلية بطريقة آمنة باستخدام مصادقة OAuth/OIDC المتوافقة مع المعايير المتّبعة في المجال.

نشر خدمة Cloud Run

تأكَّد أولاً من تفعيل واجهات برمجة التطبيقات المطلوبة:

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 تلقّت طلب استرداد بيانات باستخدام 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- إنشاء قائمة انتظار باستخدام إعدادات التوجيه

في هذه الخطوة، ستتعرّف على كيفية إنشاء قائمة انتظار في Cloud Tasks تتضمّن إعدادات توجيه لإضافة عملية إلغاء لعنوان URI الخاص ببروتوكول HTTP باستخدام ميزة إعدادات توجيه المهام على مستوى قائمة الانتظار. بعد ذلك، ستضيف مهام HTTP إلى هذا التطبيق لاستهداف خدمة Cloud Run الأولى، وستلاحظ أنّ إعدادات التوجيه تتجاوز معرّف الموارد المنتظم (URI) لتوجيه المهام إلى خدمة Cloud Run الثانية.

5d1ec61a933f77.png

ما هو إعداد توجيه المهام على مستوى قائمة الانتظار؟

يؤدي تغيير إعدادات توجيه المهام على مستوى قائمة الانتظار إلى تغيير توجيه مهام HTTP لقائمة الانتظار بأكملها لجميع المهام الجديدة والمعلّقة. يسمح ذلك بإنشاء المهام بسهولة أكبر لأنّه لا يلزم ضبط هدف HTTP على مستوى المهمة، كما أنّه يمنح مقدّم الخدمة المزيد من التحكّم لأنّه يمكنه ضبط هدف جميع المهام في قائمة انتظار (مثل توجيه الزيارات إلى نظام خلفي مختلف إذا كان النظام الخلفي الأصلي غير متوفّر).

يمكن ضبط الإعدادات التالية على مستوى قائمة الانتظار:

  • العناوين: ستؤدي العناوين على مستوى قائمة الانتظار، عند تحديدها على مستوى قائمة الانتظار، إلى إدراج/تعديل العناوين لجميع المهام في قائمة الانتظار.
  • طريقة HTTP: عند تحديد طريقة HTTP على مستوى قائمة الانتظار، سيتم تجاهل طريقة HTTP لجميع المهام في قائمة الانتظار.
  • معرّف الموارد المنتظم (URI) المستهدَف: يمكن إلغاء المضيف والمسار وطلب البحث والمنفذ والمخطط (HTTP أو HTTPS) بشكلٍ فردي.
  • التفويض: عند تحديد إعدادات OIDC/OAuth على مستوى قائمة الانتظار، سيتم تجاهل إعدادات OIDC/OAuth على مستوى المهمة.

نشر خدمة ثانية على Cloud Run

انشر خدمة Cloud Run ثانية ستكون بمثابة هدف لتجاوز معرّف الموارد المنتظم (URI) لبروتوكول HTTP لاحقًا:

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 باستخدام إعدادات التوجيه

أنشئ قائمة انتظار تتضمّن إعدادات توجيه مع تجاهل معرّف الموارد المنتظم (URI) لبروتوكول HTTP لخدمة Cloud Run الثانية.

QUEUE2=http-queue-uri-override

gcloud beta tasks queues create $QUEUE2 \
  --http-uri-override=host:$SERVICE2_HOST \
  --location=$LOCATION

يُرجى العِلم أنّ تجاهل معرّف الموارد المنتظم (URI) يشير إلى خدمة Cloud Run الثانية. سيتم تجاهل مضيف معرّف الموارد المنتظم (URI) الأصلي لأي مهمة HTTP تمت إضافتها إلى قائمة الانتظار. يمكنك الاطّلاع على إعدادات قائمة الانتظار:

gcloud beta tasks queues describe $QUEUE2 --location=$LOCATION

من المفترض أن يظهر httpTarget مع uriOverride يشير إلى مضيف الخدمة الثانية:

httpTarget:
  uriOverride:
    host: hello2-idcwffc3yq-uc.a.run.app
    pathOverride: {}
    queryOverride: {}
...

أوقِف قائمة الانتظار مؤقتًا، حتى تتمكّن من مراقبة مهام HTTP أثناء إنشائها:

gcloud tasks queues pause $QUEUE2 --location=$LOCATION

6. إنشاء مهمة HTTP واختبارها في قائمة الانتظار باستخدام إعدادات التوجيه

في هذه الخطوة، ستنشئ مهمة HTTP لاستهداف الخدمة الأولى وستلاحظ أنّ قائمة الانتظار تتجاهل معرّف الموارد المنتظم الخاص بها للإشارة إلى الخدمة الثانية.

إنشاء مهمة 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 الثانية (وليس الأولى) تلقّت طلب استرداد بيانات باستخدام 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. تغيير المهام المعلّقة باستخدام إعدادات التوجيه

يمكنك أيضًا استخدام إعدادات التوجيه لتغيير معرّف الموارد المنتظم (URI) لبروتوكول HTTP لجميع المهام المعلّقة في قائمة الانتظار. يكون هذا الإجراء مفيدًا إذا تعذّر الوصول إلى خدمة الخلفية وأردت الانتقال بسرعة إلى خدمة أخرى. لنطّلع على طريقة عمل ذلك في هذه الخطوة.

إيقاف قائمة الانتظار مؤقتًا مرة أخرى:

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 الأولى تلقّت طلب استرداد بيانات باستخدام 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

عادةً، يمكنك إنشاء مهام باستخدام Tasks API من gcloud أو مكتبات برامج Tasks. يفرض ذلك على التطبيقات تضمين طلبات HTTP في مهام باستخدام مكتبات العميل، كما يؤدي إلى إنشاء تبعية بين التطبيقات ومكتبات عميل Tasks.

في هذه الخطوة، ستتعرّف على كيفية الاستفادة من إلغاء HTTP URI على مستوى قائمة الانتظار وواجهة BufferTask API الجديدة لإنشاء مهام تستهدف HTTP بسهولة أكبر من خلال إرسال طلب HTTP فقط. يمكن لأي تطبيق يستطيع إرسال طلبات HTTP إنشاء مهام تستهدف HTTP.

b1606516297fc4b6.png

ما هي BufferTask API؟

إنّ واجهة CreateTask API هي الطريقة القديمة لإنشاء المهام، وتتطلّب من العميل إرسال عنصر مهمة إلى واجهة برمجة التطبيقات مع ضبط جميع الحقول المطلوبة.

BufferTask API هي ميزة جديدة تتيح للمستخدمين إنشاء مهمة HTTP بدون الحاجة إلى تقديم أي إعدادات مهمة (عنوان URL لبروتوكول HTTP والعناوين والتفويض)، ما يسمح لك ببساطة بإرسال رسالة أو نص طلبك إلى Buffer API.

يتيح ذلك دمجًا أسهل مع الخدمات، إذ يمكن الآن نشر Cloud Tasks أمام خدمتك بدون الحاجة إلى إجراء أي تغييرات على الرموز البرمجية من جهة العميل. سيتم تضمين أي طلب HTTP عشوائي يتم إرساله إلى واجهة برمجة التطبيقات BufferTask ككائن Task وتسليمه إلى الوجهة المحدّدة على مستوى قائمة الانتظار.

لاستخدام BufferTask API، يجب ضبط إعدادات Target 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. في الخلفية، ستغلّف 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. لاحظ كيف أنّه طلب استرداد بيانات باستخدام 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# يتم فيه إرسال طلب استرداد بيانات باستخدام GET مباشرةً إلى واجهة برمجة تطبيقات BufferTask بدون الحاجة إلى تضمينه في Task أو الحاجة إلى مكتبة برامج العميل لخدمة 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 إنشاء مهمة من طلبات 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. تهانينا

تهانينا، لقد أكملت درس البرمجة.

يمكنك بعد ذلك تجربة استخدام 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) على مستوى قائمة الانتظار
  • كيفية تغيير المهام المعلّقة باستخدام الإعداد الجديد لتجاوز معرّف الموارد المنتظم (URI) على مستوى قائمة الانتظار
  • كيفية تخزين طلبات HTTP مؤقتًا بسهولة أكبر باستخدام واجهة برمجة التطبيقات BufferTask الجديدة