ส่วนขยาย Google Cloud Pub/Sub

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

เวอร์ชัน: 1.5.1

เผยแพร่ข้อความไปยังหัวข้อในบริการ Google Cloud Pub/Sub

เนื้อหานี้ให้ข้อมูลอ้างอิงสำหรับการกำหนดค่าและการใช้ส่วนขยายนี้

ข้อกำหนดเบื้องต้น

คุณต้องดำเนินการต่อไปนี้ก่อนใช้ส่วนขยายจากพร็อกซี API โดยใช้นโยบาย ExtensionCallout

  1. สร้างหัวข้อ Cloud Pub/Sub ตามที่อธิบายไว้ในคู่มือเริ่มต้นใช้งานฉบับย่อ: การใช้คอนโซล

  2. เมื่อสร้างหัวข้อแล้ว ให้ให้สิทธิ์เผยแพร่ไปยังหัวข้อ Cloud Pub/Sub เช่น คุณสามารถใช้บทบาท roles/pubsub.publisher เพื่อเผยแพร่ไปยังหัวข้อได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับบทบาทใน Cloud Pub/Sub ได้ที่การควบคุมการเข้าถึง

  3. ใช้คอนโซล GCP เพื่อสร้างคีย์สําหรับบัญชีบริการ

  4. ใช้เนื้อหาของไฟล์คีย์ JSON ที่ได้เมื่อเพิ่มและกําหนดค่าส่วนขยายโดยใช้ข้อมูลอ้างอิงการกําหนดค่า

เกี่ยวกับ Cloud Pub/Sub

Cloud Pub/Sub ให้บริการการรับส่งข้อความแบบหลายต่อหลายแบบไม่พร้อมกันซึ่งแยกผู้ส่งและผู้รับออกจากกัน Cloud Pub/Sub ให้บริการการรับส่งข้อความที่ทำงานได้อย่างคงที่และมีเวลาในการตอบสนองต่ำ ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์ผสานรวมระบบที่โฮสต์ใน Google Cloud Platform และภายนอกได้อย่างรวดเร็ว

หากคุณเพิ่งเริ่มต้นใช้งาน Cloud Pub/Sub โปรดดูคู่มือเริ่มต้นใช้งานในเอกสารประกอบของ Cloud Pub/Sub

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าการรองรับการดำเนินการของส่วนขยาย Cloud Pub/Sub โดยใช้นโยบาย ExtensionCallout

ข้อความ

ในตัวอย่างนี้ การดำเนินการ 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>

ตัวอย่าง Structured Data รูปแบบ 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"}

ข้อมูลอ้างอิงการกําหนดค่า

ใช้ข้อมูลต่อไปนี้เมื่อกําหนดค่าและติดตั้งใช้งานส่วนขยายนี้เพื่อใช้ในพร็อกซี API

พร็อพเพอร์ตี้ส่วนขยายทั่วไป

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 เนื้อหาของไฟล์คีย์บัญชีบริการจะเป็นดังนี้ เมื่อส่งผ่าน Management API ค่าจะเป็นค่าที่เข้ารหัส Base64 ที่สร้างขึ้นจากไฟล์คีย์ของบัญชีบริการ ไม่มี ได้