Google Cloud Pub/Sub एक्सटेंशन

Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

वर्शन: 2.0.2

Google Cloud Pub/Sub सेवा में किसी विषय पर मैसेज पब्लिश करें.

इस कॉन्टेंट में, इस एक्सटेंशन को कॉन्फ़िगर करने और इस्तेमाल करने के बारे में जानकारी दी गई है.

ज़रूरी शर्तें

ExtensionCallout नीति का इस्तेमाल करके, एपीआई प्रॉक्सी से एक्सटेंशन का इस्तेमाल करने से पहले, आपको ये काम करने होंगे:

  1. क्विकस्टार्ट: कंसोल का इस्तेमाल करना में बताए गए तरीके से, Cloud Pub/Sub विषय बनाएं.

  2. विषय मिलने के बाद, Cloud Pub/Sub विषय पर पब्लिश करने के लिए अनुमति दें. उदाहरण के लिए, विषयों पर पब्लिश करने के लिए roles/pubsub.publisher भूमिका का इस्तेमाल किया जा सकता है. Cloud Pub/Sub की भूमिकाओं के बारे में ज़्यादा जानने के लिए, ऐक्सेस कंट्रोल लेख पढ़ें.

  3. Google Cloud Console का इस्तेमाल करके, सेवा खाते के लिए कुंजी जनरेट करें.

  4. कॉन्फ़िगरेशन रेफ़रंस का इस्तेमाल करके एक्सटेंशन को जोड़ने और कॉन्फ़िगर करने के दौरान, जनरेट हुई कुंजी वाली JSON फ़ाइल के कॉन्टेंट का इस्तेमाल करें.

Cloud Pub/Sub के बारे में जानकारी

Cloud Pub/Sub, कई लोगों को एसिंक्रोनस मैसेज भेजने की सुविधा देता है. इससे मैसेज भेजने वाले और पाने वाले अलग-अलग हो जाते हैं. Cloud Pub/Sub, कम समय में मैसेज डिलीवर करता है. साथ ही, यह लंबे समय तक मैसेजिंग की सुविधा देता है. इससे डेवलपर, Google Cloud और बाहरी तौर पर होस्ट किए गए सिस्टम को तुरंत इंटिग्रेट कर पाते हैं.

अगर आपने Cloud Pub/Sub का इस्तेमाल अभी शुरू किया है, तो Cloud Pub/Sub के दस्तावेज़ में दिए गए क्विकस्टार्ट देखें.

सैंपल

यहां दिए गए उदाहरणों में, ExtensionCallout नीति का इस्तेमाल करके, Cloud Pub/Sub एक्सटेंशन की कार्रवाइयों के लिए सहायता को कॉन्फ़िगर करने का तरीका बताया गया है.

मैसेज

इस उदाहरण में, publish कार्रवाई, एक्सटेंशन के कॉन्फ़िगरेशन में तय किए गए विषय पर एक मैसेज को स्ट्रिंग के तौर पर पब्लिश करती है. publish कार्रवाई, उस विषय में पब्लिश किए गए मैसेज का आईडी दिखाती है जिसमें उसे पब्लिश किया गया था. साथ ही, उसे <Output> टैग से तय किए गए वैरिएबल में लिखती है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : "My test message."
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

Assign Message की यह नीति, एक्सटेंशन के जवाब को सेव करने वाले वैरिएबल की वैल्यू का इस्तेमाल करके, जवाब के पेलोड को असाइन करती है. मैसेज आईडी, आउटपुट वैरिएबल की messageId प्रॉपर्टी में सेव होता है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

रिस्पॉन्स के डेटा को JSON के तौर पर दिखाया जाता है:

{"messageId":"165918654986954"}

इसलिए, topic.message.messageId की वैल्यू 165918654986954 है.

JSON मैसेज

इस उदाहरण में, publish कार्रवाई, एक्सटेंशन के कॉन्फ़िगरेशन में बताए गए विषय पर JSON के तौर पर मैसेज पब्लिश करती है. publish कार्रवाई, उस विषय में पब्लिश किए गए मैसेज का आईडी दिखाती है जिसमें उसे पब्लिश किया गया था. साथ ही, उसे <Output> टैग से तय किए गए वैरिएबल में लिखती है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" }
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

Assign Message की यह नीति, एक्सटेंशन के जवाब को सेव करने वाले वैरिएबल की वैल्यू का इस्तेमाल करके, जवाब के पेलोड को असाइन करती है. मैसेज आईडी, आउटपुट वैरिएबल की messageId प्रॉपर्टी में सेव होता है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

रिस्पॉन्स के डेटा को JSON के तौर पर दिखाया जाता है:

{"messageId":"165918654986954"}

इसलिए, topic.message.messageId की वैल्यू 165918654986954 है.

कार्रवाइयां

प्रकाशित करें

यह फ़ंक्शन, इस एक्सटेंशन के कॉन्फ़िगरेशन में बताए गए विषय पर एक मैसेज पब्लिश करता है.

सिंटैक्स

<Action>publish</Action>
<Input><![CDATA[{
  "message" : "message-to-publish" | JSON-structured-data,
  "customAttributes": JSON-array
}]]></Input>

स्ट्रिंग का उदाहरण

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : "My test message."
  }
]]></Input>

JSON स्ट्रक्चर्ड डेटा का उदाहरण

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" }
  }
]]></Input>

कस्टम एट्रिब्यूट का उदाहरण

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" },
      "customAttributes": {"attr1": "foo", "attr2": "bar"}
  }
]]></Input>

अनुरोध के पैरामीटर

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
मैसेज पब्लिश करने के लिए मैसेज. आपके पास स्ट्रिंग का इस्तेमाल करने या अपने डिज़ाइन के JSON का इस्तेमाल करके मैसेज को स्ट्रक्चर करने का विकल्प होता है. स्ट्रिंग या JSON कोई नहीं हां
customAttributes

फ़ॉर्म में मौजूद मैसेज में जोड़ने के लिए कस्टम एट्रिब्यूट:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
JSON ऐरे कोई नहीं नहीं

जवाब

JSON में, विषय पर पब्लिश किए गए मैसेज का आईडी होता है. उदाहरण के लिए:

{"messageId":"165918654986954"}

कॉन्फ़िगरेशन का रेफ़रंस

एपीआई प्रॉक्सी में इस्तेमाल करने के लिए इस एक्सटेंशन को कॉन्फ़िगर और डिप्लॉय करते समय, इनका इस्तेमाल करें.

एक्सटेंशन की सामान्य प्रॉपर्टी

हर प्रॉपर्टी के लिए नीचे दी गई प्रॉपर्टी मौजूद हैं.

प्रॉपर्टी जानकारी डिफ़ॉल्ट ज़रूरी है
name वह नाम, जिसे आप एक्सटेंशन का यह कॉन्फ़िगरेशन दे रहे हैं. कभी नहीं हां
packageName एक्सटेंशन पैकेज का नाम, जो Apigee Edge से दिया गया है. कभी नहीं हां
version उस एक्सटेंशन पैकेज का वर्शन नंबर जिससे आपको एक्सटेंशन कॉन्फ़िगर करना है. कभी नहीं हां
configuration आप जिस एक्सटेंशन को जोड़ रहे हैं उसके लिए खास तौर पर कॉन्फ़िगरेशन वैल्यू. इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी देखें कभी नहीं हां

इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी

प्रॉपर्टी ब्यौरा डिफ़ॉल्ट ज़रूरी है
topic वह विषय जिस पर पब्लिश करना है. इस वैल्यू को Pub/Sub सेवा से पाएं. जैसे, सेवा के लिए Google Cloud Console से. उदाहरण के लिए, विषय का नाम इस तरह हो सकता है projects/GCP-PROJECT-ID/topics/TOPIC-NAME कोई नहीं. हां.
credentials Apigee Edge कंसोल में डालने पर, यह आपकी सेवा खाते की कुंजी फ़ाइल का कॉन्टेंट होता है. Management API का इस्तेमाल करके भेजे जाने पर, यह सेवा खाते की कुंजी फ़ाइल से जनरेट की गई base64-encoded वैल्यू होती है. कोई नहीं. हां.