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

1. مقدمة

c6ac6ed05292f13e.png

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 على مستوى قائمة الانتظار وواجهة برمجة التطبيقات BufferTask API الجديدة لتخزين طلبات HTTP مؤقتًا بشكل أكثر سهولة باستخدام "مهام Cloud".

ما ستتعرَّف عليه

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

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

إعداد بيئة ذاتية

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.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 العادية في المجال.

نشر خدمة تشغيل السحابة الإلكترونية

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

gcloud services enable \
  cloudtasks.googleapis.com \
  run.googleapis.com

انشر خدمة تشغيل في السحابة الإلكترونية ستكون بمثابة هدف لمهام HTTP:

SERVICE1=hello1
REGION=us-central1

gcloud run deploy $SERVICE1 \
  --allow-unauthenticated \
  --image=gcr.io/cloudrun/hello \
  --region=$REGION

إنشاء قائمة انتظار في "مهام Google"

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

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

5d1ec61a933f77.png

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

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

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

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

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

أنشئ قائمة انتظار تتضمن تهيئة توجيه مع تجاوز عنوان URI لبروتوكول HTTP إلى خدمة التشغيل في السحابة الإلكترونية الثانية.

QUEUE2=http-queue-uri-override

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

لاحظ أن تجاوز معرف الموارد المنتظم (URI) يشير إلى خدمة تشغيل السحابة الإلكترونية الثانية. سيتم تجاهل مضيف عنوان 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 لاستهداف الخدمة الأولى وتلاحظ أنه تم تجاوز معرّف الموارد المنتظم (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

من المفترض أن ترى أن خدمة التشغيل السحابي الثانية (وليس الأولى) تلقت طلب HTTP GET من مهام Cloud بسبب الإلغاء:

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

لا تزال المهمة معلّقة بسبب إيقاف قائمة الانتظار مؤقتًا.

والآن، عليك تحديث إلغاء URI لبروتوكول HTTP للإشارة إلى الخدمة الأولى. سيؤدي هذا الإجراء إلى إلغاء مضيف المهمة المعلَّقة من 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

ينبغي أن ترى أن خدمة التشغيل في السحابة الإلكترونية الأولى تلقت طلب HTTP GET من "مهام Cloud" بسبب الإلغاء (بدلاً من 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

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

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

b1606516297fc4b6.png

ما هي واجهة برمجة التطبيقات BufferTask API؟

واجهة برمجة التطبيقات CreateTask هي الطريقة القديمة لإنشاء "مهام Google" وتتطلب من العميل إرسال كائن "Task" (مهمة) إلى واجهة برمجة التطبيقات مع ضبط جميع الحقول المطلوبة.

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

ويتيح ذلك تكاملاً أسهل مع الخدمات، إذ يمكن الآن نشر "مهام Cloud" أمام خدمتك بدون الحاجة إلى إجراء أيّ تغييرات على الرموز من جهة العميل. سيتم ربط أي طلب 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" على دمج طلبات 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 أو الحاجة إلى مكتبة العميل لمهام Cloud:

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. تهانينا

تهانينا، لقد أنهيت الدرس التطبيقي حول الترميز.

للمتابعة، يمكنك تجربة Cloud Tasks كمخزن مؤقت بين Pub/Sub وCloud Run، حيث يمكنك الاطّلاع على مثال واقعي حول كيفية مساعدة هذه الميزات الجديدة في Cloud Tasks في إنشاء قائمة انتظار للمخزن المؤقت بسهولة بين الخدمات.

تنظيف البيانات (اختياري)

لتجنب تكبد أي رسوم، من الجيد تنظيف الموارد.

إذا لم تكن بحاجة إلى المشروع، يمكنك ببساطة حذفه من خلال اتّباع الخطوات التالية:

gcloud projects delete $PROJECT_ID

إذا كنت بحاجة إلى المشروع، يمكنك حذف الموارد بشكل فردي.

احذف خدمات تشغيل السحابة الإلكترونية:

gcloud run services delete $SERVICE1 --region $REGION
gcloud run services delete $SERVICE2 --region $REGION

حذف قوائم انتظار "مهام Google":

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 API الجديدة