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

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

वर्शन: 1.5.1

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

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

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

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

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

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

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

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

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

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

अगर आपने अभी-अभी 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>

मैसेज असाइन करें नीति में, रिस्पॉन्स पेलोड असाइन करने के लिए, एक्सटेंशन के रिस्पॉन्स को सेव करने वाले वैरिएबल की वैल्यू का इस्तेमाल किया जाता है. मैसेज आईडी, आउटपुट वैरिएबल की 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>

मैसेज असाइन करें नीति में, रिस्पॉन्स पेलोड असाइन करने के लिए, एक्सटेंशन के रिस्पॉन्स को सेव करने वाले वैरिएबल की वैल्यू का इस्तेमाल किया जाता है. मैसेज आईडी, आउटपुट वैरिएबल की 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"}

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

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

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

The following properties are present for every extension.

Property Description Default Required
name Name you're giving this configuration of the extension. None Yes
packageName Name of the extension package as given by Apigee Edge. None Yes
version Version number for the extension package from which you're configuring an extension. None Yes
configuration Configuration value specific to the extension you're adding. See Properties for this extension package None Yes

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

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