Cloud Tasks के साथ बफ़र एचटीटीपी अनुरोध

1. परिचय

c6ac6ed05292f13e.png

Cloud Tasks, कई टास्क को पूरा करने, भेजने, और डिलीवर करने के लिए, सूची बनाने की पूरी तरह से मैनेज की गई सेवा है.

Cloud Tasks आपको काम के हिस्सों को अलग करने देता है, जिन्हें टास्क कहा जाता है. इन्हें आपके मुख्य ऐप्लिकेशन फ़्लो के बाहर, अलग-अलग तरीके से (जैसे, डेटाबेस एंट्री अपडेट करने का टास्क) किया जा सकता है. साथ ही, आपके बनाए गए हैंडलर का इस्तेमाल करके एसिंक्रोनस रूप से प्रोसेस किए जाने के लिए भेजा जा सकता है.

ऑफ़ किए गए टास्क को एक सूची में जोड़ दिया जाता है, जो तब तक टास्क पर बनी रहती है, जब तक कि वह पूरा नहीं हो जाता या पूरा नहीं हो जाता. कॉन्फ़िगरेशन के आधार पर, यह सूची डिस्पैच फ़्लो कंट्रोल की तरह भी काम कर सकती है. सूची बनाने और कॉन्फ़िगर करने की सुविधा मिलती है. इसके बाद, इसे Cloud Tasks सेवा मैनेज करती है. टास्क जोड़े जाने के बाद, सूची उन्हें डिस्पैच करती है और यह पक्का करती है कि कर्मचारी उन्हें सही तरीके से प्रोसेस करें.

d59ffe8d34138c88.png

क्लाउड टास्क की कुछ मुख्य सुविधाएं ये हैं:

  • एचटीटीपी टारगेट: इंडस्ट्री स्टैंडर्ड OAuth/OIDC ऑथेंटिकेशन का इस्तेमाल करके, सुरक्षित तरीके से Compute Engine, Google Kubernetes Engine, Cloud Run, Cloud Functions या ऑन-प्रिमाइसेस सिस्टम पर चल रही किसी भी एचटीटीपी सेवा को टारगेट करने वाले टास्क जोड़ें.
  • टास्क की डुप्लीकेट कॉपी हटाने की तकनीक: कई बार जोड़े गए टास्क को सिर्फ़ एक बार भेजा जाएगा.
  • डिलीवरी की गारंटी: इस बात की गारंटी है कि टास्क को कम से कम एक बार डिलीवर किया जाएगा. साथ ही, ज़्यादातर टास्क एक ही बार पूरे हो जाएंगे.
  • रेटिंग देने और फिर से कोशिश करने के कंट्रोल: टास्क भेजने की दर, कोशिशों की ज़्यादा से ज़्यादा संख्या, और दो कोशिशों के बीच इंतज़ार का कम से कम समय सेट करके, एक्ज़ीक्यूशन को कंट्रोल करें.
  • आने वाले समय के लिए शेड्यूल करना: टास्क के चलने का समय कंट्रोल करें.

इस कोडलैब में, आपको सबसे पहले एचटीटीपी टारगेट टास्क के लिए, सामान्य क्लाउड टास्क की सूची बनाने और उसे इस्तेमाल करने का तरीका पता चलेगा. इसके बाद, आपको Cloud Tasks की मदद से एचटीटीपी अनुरोधों को और आसानी से बफ़र करने के लिए, सूची-लेवल के एचटीटीपी यूआरआई और नए बफ़र टास्क एपीआई को इस्तेमाल करने के तरीके के बारे में जानकारी मिलेगी.

आप इन चीज़ों के बारे में जानेंगे

  • एचटीटीपी टारगेट टास्क बनाने का तरीका.
  • नए क्यू-लेवल के एचटीटीपी यूआरआई के बदलाव की मदद से, एचटीटीपी टारगेट टास्क बनाने का तरीका.
  • सूची में मौजूद नए एचटीटीपी यूआरआई की मदद से, बचे हुए टास्क कैसे बदलें.
  • नए बफ़र टास्क एपीआई की मदद से, एचटीटीपी अनुरोधों को आसानी से बफ़र करने का तरीका क्या है.

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करें

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको अपना प्रोजेक्ट आईडी बताना होगा. आम तौर पर, इसकी पहचान PROJECT_ID के रूप में की जाती है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. दूसरा तरीका यह है कि आप खुद भी आज़माकर देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. साथ ही, यह प्रोजेक्ट के खत्म होने तक बना रहता है.
  • आपकी जानकारी के लिए, प्रोजेक्ट नंबर नाम की एक तीसरी वैल्यू दी गई है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, बिलिंग से बचने के लिए संसाधनों को बंद करें. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

क्लाउड शेल शुरू करें

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में जाकर, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

7ffe5cbb04455448.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस कोडलैब (कोड बनाना सीखना) में आपका सारा काम ब्राउज़र में किया जा सकता है. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

3. एचटीटीपी टारगेट टास्क के लिए सामान्य सूची बनाएं

इस पहले चरण में, आपको Cloud Run सेवा को टारगेट करने के लिए, सामान्य Cloud Tasks सूची बनाने और इसमें एचटीटीपी टास्क जोड़ने का तरीका बताया जाएगा.

d4f09a342c8eab.png

एचटीटीपी टारगेट टास्क क्या हैं?

एचटीटीपी टारगेट टास्क, इंडस्ट्री स्टैंडर्ड OAuth/OIDC ऑथेंटिकेशन का इस्तेमाल करके सुरक्षित तरीके से Compute Engine, Google Kubernetes Engine, Cloud Run, Cloud Functions या ऑन-प्रिमाइसेस सिस्टम पर चल रही किसी भी एचटीटीपी सेवा को टारगेट कर सकते हैं.

Cloud Run सेवा को डिप्लॉय करना

सबसे पहले, यह पक्का करें कि ज़रूरी एपीआई चालू हों:

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

Cloud Run सेवा डिप्लॉय करें, जो एचटीटीपी टास्क के टारगेट के तौर पर काम करेगी:

SERVICE1=hello1
REGION=us-central1

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

Cloud Tasks की सूची बनाना

सामान्य क्लाउड टास्क सूची बनाएं:

QUEUE1=http-queue
LOCATION=us-central1

gcloud tasks queues create $QUEUE1 --location=$LOCATION

सूची को कुछ समय के लिए रोकें, ताकि आप एचटीटीपी टास्क बनाते समय देख सकें:

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

4. एचटीटीपी टास्क बनाना और उसकी जांच करना

इस चरण में, पहले बनाई गई सूची को टारगेट करने के लिए, एचटीटीपी टास्क बनाया जा सकता है.

एचटीटीपी टास्क बनाना

gcloud का इस्तेमाल करके, एचटीटीपी टास्क बनाए जा सकते हैं:

gcloud tasks create-http-task \
    --queue=$QUEUE1 \
    --location=$LOCATION \
    --url=$SERVICE1_URL \
    --method=GET

ज़रूरी नहीं: क्लाइंट लाइब्रेरी की मदद से एचटीटीपी टास्क भी बनाया जा सकता है. उदाहरण के लिए, C# सैंपल के लिए Program.cs देखें, जहां एचटीटीपी अनुरोध को Task और TaskRequest में रैप किया जाता है. इसके बाद, CloudTasksClient की मदद से Cloud Tasks पर भेजा जाता है:

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

एचटीटीपी टास्क की जांच करना

यहां टास्क बनाया जाता है, लेकिन उसे अभी तक एक्ज़ीक्यूट नहीं किया गया है, क्योंकि सूची को रोक दिया गया है. वीडियो की सूची बनाकर इसकी पुष्टि की जा सकती है:

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 सेवा को Cloud Tasks से एक HTTP GET अनुरोध मिला है:

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 Run की पहली सेवा को टारगेट करने के लिए, इसमें एचटीटीपी टास्क जोड़ना होगा. साथ ही, यह ध्यान रखना होगा कि रूटिंग कॉन्फ़िगरेशन, यूआरएल को दूसरी Cloud Run सेवा पर रूट करने के लिए यूआरआई की जगह ले लेता है.

5d1ec61a933f77.png

सूची-लेवल पर टास्क रूटिंग कॉन्फ़िगरेशन क्या है?

सूची-लेवल पर टास्क रूटिंग कॉन्फ़िगरेशन, बचे हुए सभी और नए टास्क के लिए, पूरी सूची के लिए एचटीटीपी टास्क रूटिंग को बदल देता है. इससे टास्क आसानी से बनाए जा सकते हैं, क्योंकि एचटीटीपी टारगेट को टास्क लेवल पर सेट करने की ज़रूरत नहीं होती. साथ ही, यह सेवा देने वाली कंपनी पर ज़्यादा कंट्रोल शिफ़्ट कर देता है, क्योंकि वह सूची में सभी टास्क के टारगेट को सेट कर सकती है. उदाहरण के लिए, ओरिजनल बैकएंड बंद होने पर ट्रैफ़िक को किसी दूसरे बैकएंड पर भेजें.

नीचे दिए गए कॉन्फ़िगरेशन को सूची के लेवल पर सेट किया जा सकता है:

  • हेडर: सूची में दिए गए हेडर, सूची के लेवल पर तय किए गए होने पर, सूची में मौजूद सभी टास्क के हेडर को इस्तेमाल कर देंगे.
  • एचटीटीपी तरीका: सूची के लेवल पर बताए गए एचटीटीपी तरीके से, सूची में मौजूद सभी टास्क के लिए एचटीटीपी तरीका बदल जाएगा.
  • टारगेट यूआरआई: होस्ट, पाथ, क्वेरी, पोर्ट, स्कीम (एचटीटीपी या एचटीटीपीएस) को अलग-अलग बदला जा सकता है.
  • अनुमति देना: सूची में बताए जाने पर OIDC/OAuth कॉन्फ़िगरेशन, टास्क-लेवल के OIDC/OAuth कॉन्फ़िगरेशन को बदल देगा.

Cloud Run की दूसरी सेवा डिप्लॉय करना

Cloud Run की दूसरी सेवा डिप्लॉय करें, जो बाद में एचटीटीपी यूआरआई के टारगेट के तौर पर काम करेगी:

SERVICE2=hello2
REGION=us-central1

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

सेवा यूआरएल के होस्ट को बाद के लिए सेव करें:

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 की सूची बनाना

एचटीटीपी यूआरआई की मदद से, Cloud Run की दूसरी सेवा पर स्विच करने वाले रूटिंग कॉन्फ़िगरेशन की मदद से एक सूची बनाएं.

QUEUE2=http-queue-uri-override

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

ध्यान दें कि यूआरआई में बदलाव की सेटिंग, Cloud Run की दूसरी सेवा से जुड़ी है. सूची में जोड़े गए किसी भी एचटीटीपी टास्क का ओरिजनल यूआरआई होस्ट बदल जाएगा. सूची का कॉन्फ़िगरेशन यहां देखा जा सकता है:

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

आपको दिखेगा कि httpTarget में एक uriOverride है, जो दूसरी सेवा के होस्ट पर ले जाता है:

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

सूची को कुछ समय के लिए रोकें, ताकि आप एचटीटीपी टास्क बनाते समय देख सकें:

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

6. रूटिंग कॉन्फ़िगरेशन की मदद से, सूची के लिए एचटीटीपी टास्क बनाएं और उसकी जांच करें

इस चरण में, पहली सेवा को टारगेट करने के लिए एक एचटीटीपी टास्क बनाया जाएगा. साथ ही, देखा जाएगा कि दूसरी सेवा पर ले जाने के लिए, उसके यूआरआई को सूची से बदल दिया गया है.

एचटीटीपी टास्क बनाना

पहली सेवा के यूआरएल का इस्तेमाल करके एचटीटीपी टास्क बनाएं:

gcloud tasks create-http-task \
    --queue=$QUEUE2 \
    --location=$LOCATION \
    --url=$SERVICE1_URL \
    --method=GET

एचटीटीपी टास्क की जांच करना

सूची को फिर से शुरू करें:

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

आपको दिखेगा कि क्लाउड रन की दूसरी (पहली नहीं) सेवा को ओवरराइड की वजह से Cloud Tasks से एक एचटीटीपी GET अनुरोध मिला है:

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. रूटिंग कॉन्फ़िगरेशन की मदद से, बचे हुए टास्क बदलें

रूटिंग कॉन्फ़िगरेशन का इस्तेमाल करके, सूची में बाकी बचे सभी टास्क के एचटीटीपी यूआरआई को बदला भी जा सकता है. यह तब काम आता है, जब बैकएंड सेवा बंद हो जाए और आपको तुरंत दूसरी सेवा का इस्तेमाल करना हो. चलिए देखते हैं कि इस चरण में यह कैसे काम करता है.

सूची को फिर से रोकें:

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

टास्क के यूआरएल के तौर पर google.com की मदद से एक एचटीटीपी टास्क बनाएं:

gcloud tasks create-http-task \
    --queue=$QUEUE2 \
    --location=$LOCATION \
    --url=https://www.google.com \
    --method=GET

टास्क की सूची रुका हुआ है. इसलिए, टास्क को 'मंज़ूरी बाकी है' स्थिति में रखा गया है.

अब, एचटीटीपी यूआरआई के ओवरराइड को अपडेट करें, ताकि पहली सेवा पर ले जाया जा सके. ऐसा करने से, बचे हुए टास्क का होस्ट, 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 सेवा को Cloud Tasks से एचटीटीपी GET अनुरोध मिला (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. बफ़र टास्क एपीआई की सूची बनाएं

आम तौर पर, Tasks API का इस्तेमाल करके gcloud या Tasks क्लाइंट लाइब्रेरी से टास्क बनाए जाते हैं. यह ऐप्लिकेशन पर क्लाइंट लाइब्रेरी का इस्तेमाल करके, एचटीटीपी अनुरोधों को Tasks में रैप करने के लिए बोझ डालता है. साथ ही, इससे ऐप्लिकेशन और Tasks क्लाइंट लाइब्रेरी के बीच डिपेंडेंसी भी बनती है.

इस चरण में, आपको दिखेगा कि सूची के लेवल पर एचटीटीपी यूआरआई के बदलाव और नए बफ़र टास्क एपीआई का फ़ायदा कैसे लिया जा सकता है, ताकि आप सिर्फ़ एक एचटीटीपी अनुरोध भेजकर, एचटीटीपी टारगेट टास्क बना सकें. एचटीटीपी अनुरोध भेजने वाला कोई भी ऐप्लिकेशन, अब एचटीटीपी टारगेट टास्क बना सकता है.

b1606516297fc4b6.png

बफ़र टास्क एपीआई क्या है?

CreateTask API, Tasks बनाने का पुराना तरीका है. इसमें, क्लाइंट को सभी ज़रूरी फ़ील्ड सेट करके, टास्क ऑब्जेक्ट को एपीआई में भेजना होता है.

BufferTask API एक नई सुविधा है. इसकी मदद से उपयोगकर्ता, बिना कोई टास्क कॉन्फ़िगरेशन (एचटीटीपी यूआरएल, हेडर, अनुमति) दिए बिना एचटीटीपी टास्क बना सकते हैं. इसकी मदद से, बफ़र एपीआई को कोई मैसेज या अपने अनुरोध का मुख्य हिस्सा भेजा जा सकता है.

इससे सेवाओं के साथ इंटिग्रेशन आसान हो जाता है, क्योंकि अब आपको अपनी सेवा के सामने Cloud Tasks डिप्लॉय किया जा सकता है. इसके लिए, क्लाइंट साइड पर कोड में कोई बदलाव करने की ज़रूरत नहीं होती. बफ़र टास्क एपीआई को मनचाहे तरीके से भेजे गए किसी भी एचटीटीपी अनुरोध को, टास्क ऑब्जेक्ट के तौर पर रैप किया जाएगा और सूची में सेट किए गए डेस्टिनेशन पर डिलीवर किया जाएगा.

बफ़र टास्क एपीआई का इस्तेमाल करने के लिए, सूची में टारगेट यूआरआई कॉन्फ़िगरेशन सेट होना ज़रूरी है. दूसरे शब्दों में कहें, तो बफ़र टास्क एपीआई का इस्तेमाल करने के लिए, सूची-लेवल रूटिंग कॉन्फ़िगरेशन की सुविधा ज़रूरी है.

रूटिंग कॉन्फ़िगरेशन के साथ 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

सूची को कुछ समय के लिए रोकें, ताकि आप एचटीटीपी टास्क बनाते समय देख सकें:

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

9. बफ़र टास्क एपीआई की मदद से बफ़र एचटीटीपी अनुरोध

इस चरण में, बफ़र टास्क एपीआई की मदद से, आसान एचटीटीपी GET या POST अनुरोधों को बफ़र किया जाएगा. कवर में, Cloud Tasks इन एचटीटीपी अनुरोधों को सूची की डिफ़ॉल्ट रूटिंग कॉन्फ़िगरेशन सेटिंग के साथ एचटीटीपी टास्क में रैप कर देगा.

सबसे पहले, ऐक्सेस टोकन पाने के लिए लॉगिन करें और कुछ वैरिएबल सेट करें:

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"

एचटीटीपी टास्क बनाना

बफ़र टास्क एपीआई की मदद से कोई एचटीटीपी टास्क बनाएं. ध्यान दें कि कैसे यह एक सामान्य एचटीटीपी जीईटी अनुरोध है. इसके लिए टास्क बनाने की ज़रूरत नहीं है:

curl -X GET "$TASKS_QUEUES_API/$QUEUE3/tasks:buffer" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

एचटीटीपी पीओएसटी और मुख्य भाग की मदद से दूसरा एचटीटीपी टास्क बनाएं:

curl -X POST "$TASKS_QUEUES_API/$QUEUE3/tasks:buffer" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d "{'message': 'Hello World'}"

ज़रूरी नहीं: क्लाइंट लाइब्रेरी की मदद से एचटीटीपी टास्क भी बनाया जा सकता है. उदाहरण के लिए, C# सैंपल के लिए Program.cs देखें, जहां एचटीटीपी GET का अनुरोध सीधे WorkflowTask API को भेजा जाता है. इसके लिए, आपको इसे Task में रैप करने या क्लाउड टास्क के लिए क्लाइंट-लाइब्रेरी की ज़रूरत नहीं होती:

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

बफ़र, एचटीटीपी अनुरोधों से टास्क बनाने का काम किया जाता है. साथ ही, यह यूआरआई के लिए सूची की रूटिंग कॉन्फ़िगरेशन सेटिंग में मौजूद यूआरएल को जोड़ता है.

एचटीटीपी टास्क की जांच करना

सूची को फिर से शुरू करें:

gcloud tasks queues resume $QUEUE3 --location=$LOCATION

आपको दिखेगा कि Cloud Run सेवा को Cloud Tasks से एचटीटीपी GET और POST अनुरोध मिले हैं:

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. बधाई हो

बधाई हो, आपने कोडलैब पूरा कर लिया है!

फ़ॉलो अप के तौर पर, Pub/Sub और Cloud Run के बीच बफ़र के तौर पर Cloud Tasks का इस्तेमाल किया जा सकता है. इससे आपको असल दुनिया में यह पता चल सकता है कि Cloud Tasks की ये नई सुविधाएं, सेवाओं के बीच बफ़र लिस्ट को आसानी से बनाने में कैसे मदद कर सकती हैं.

क्लीनअप (ज़रूरी नहीं)

शुल्क देने से बचने के लिए, संसाधनों का इस्तेमाल करना अच्छा रहेगा.

अगर आपको प्रोजेक्ट की ज़रूरत नहीं है, तो आप प्रोजेक्ट को आसानी से मिटा सकते हैं:

gcloud projects delete $PROJECT_ID

अगर आपको प्रोजेक्ट की ज़रूरत है, तो संसाधनों को एक-एक करके मिटाया जा सकता है.

Cloud Run सेवाएं मिटाना:

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

क्लाउड टास्क की सूचियों को मिटाएं:

gcloud tasks queues delete $QUEUE1 --location=$LOCATION
gcloud tasks queues delete $QUEUE2 --location=$LOCATION
gcloud tasks queues delete $QUEUE3 --location=$LOCATION

हमने इन विषयों के बारे में बताया

  • एचटीटीपी टारगेट टास्क बनाने का तरीका.
  • नए क्यू-लेवल के एचटीटीपी यूआरआई के बदलाव की मदद से, एचटीटीपी टारगेट टास्क बनाने का तरीका.
  • सूची में मौजूद नए एचटीटीपी यूआरआई की मदद से, बचे हुए टास्क कैसे बदलें.
  • नए बफ़र टास्क एपीआई की मदद से, एचटीटीपी अनुरोधों को आसानी से बफ़र करने का तरीका क्या है.