Tiện ích Google Cloud Pub/Sub

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
Thông tin

Phiên bản: 2.0.2

Đăng tin nhắn lên một chủ đề trong dịch vụ Google Cloud Pub/Sub.

Nội dung này cung cấp thông tin tham khảo để định cấu hình và sử dụng tiện ích này.

Điều kiện tiên quyết

Trước khi sử dụng tiện ích từ một proxy API bằng chính sách ExtensionCallout, bạn phải:

  1. Tạo một chủ đề Cloud Pub/Sub, như mô tả trong phần Hướng dẫn nhanh: Sử dụng bảng điều khiển.

  2. Sau khi có chủ đề, hãy cấp quyền xuất bản cho chủ đề Cloud Pub/Sub của bạn. Ví dụ: bạn có thể sử dụng vai trò roles/pubsub.publisher để xuất bản cho các chủ đề. Để biết thêm thông tin về các vai trò Cloud Pub/Sub, hãy xem phần Kiểm soát quyền truy cập.

  3. Sử dụng Google Cloud Console để tạo khoá cho tài khoản dịch vụ.

  4. Sử dụng nội dung của tệp JSON khoá thu được khi thêm và định cấu hình tiện ích bằng cách sử dụng tài liệu tham khảo về cấu hình.

Giới thiệu về Cloud Pub/Sub

Cloud Pub/Sub cung cấp dịch vụ nhắn tin không đồng bộ, nhiều-đến-nhiều, giúp tách người gửi và người nhận. Cloud Pub/Sub cung cấp dịch vụ nhắn tin có độ trễ thấp và bền bỉ, giúp nhà phát triển nhanh chóng tích hợp các hệ thống được lưu trữ trên Google Cloud và bên ngoài.

Nếu bạn chỉ mới bắt đầu sử dụng Cloud Pub/Sub, hãy xem các hướng dẫn nhanh trong tài liệu về Cloud Pub/Sub.

Mẫu

Các ví dụ sau đây minh hoạ cách định cấu hình chế độ hỗ trợ cho các thao tác của tiện ích Cloud Pub/Sub bằng cách sử dụng chính sách ExtensionCallout.

Tin nhắn văn bản

Trong ví dụ này, thao tác publish sẽ xuất bản một thông báo dưới dạng chuỗi cho một chủ đề được chỉ định trong cấu hình của tiện ích. Thao tác publish trả về mã nhận dạng của thông báo đã xuất bản trong chủ đề mà thông báo đó được xuất bản và ghi mã nhận dạng đó vào biến do thẻ <Output> chỉ định:

<?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>

Chính sách Assign Message (Chỉ định thông báo) sau đây sử dụng giá trị của biến lưu trữ phản hồi của tiện ích để chỉ định tải trọng phản hồi. Mã thông báo được lưu trữ trong thuộc tính messageId của biến đầu ra:

<?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>

Dữ liệu phản hồi được trả về dưới dạng JSON:

{"messageId":"165918654986954"}

Do đó, giá trị của topic.message.messageId là 165918654986954.

Thông báo JSON

Trong ví dụ này, thao tác publish sẽ xuất bản một thông báo dưới dạng JSON cho một chủ đề được chỉ định trong cấu hình của tiện ích. Thao tác publish trả về mã nhận dạng của thông báo đã xuất bản trong chủ đề mà thông báo đó được xuất bản và ghi mã nhận dạng đó vào biến do thẻ <Output> chỉ định:

<?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>

Chính sách Assign Message (Chỉ định thông báo) sau đây sử dụng giá trị của biến lưu trữ phản hồi của tiện ích để chỉ định tải trọng phản hồi. Mã thông báo được lưu trữ trong thuộc tính messageId của biến đầu ra:

<?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>

Dữ liệu phản hồi được trả về dưới dạng JSON:

{"messageId":"165918654986954"}

Do đó, giá trị của topic.message.messageId là 165918654986954.

Thao tác

xuất bản

Đăng một thông báo lên chủ đề được chỉ định trong cấu hình của tiện ích này.

Cú pháp

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

Ví dụ về chuỗi

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

Ví dụ về dữ liệu có cấu trúc JSON

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

Ví dụ về thuộc tính tuỳ chỉnh

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

Tham số yêu cầu

Tham số Mô tả Loại Mặc định Bắt buộc
tin nhắn Thông báo cần xuất bản. Bạn có thể sử dụng một chuỗi hoặc cấu trúc thông báo bằng JSON do bạn tự thiết kế. Chuỗi hoặc JSON Không có
customAttributes

Các thuộc tính tuỳ chỉnh cần thêm vào thông báo trong biểu mẫu:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
Mảng JSON Không có Không

Phản hồi

JSON chứa mã nhận dạng của thông báo khi được xuất bản cho chủ đề. Ví dụ:

{"messageId":"165918654986954"}

Tài liệu tham khảo về cấu hình

Hãy sử dụng những thông tin sau khi bạn định cấu hình và triển khai tiện ích này để sử dụng trong các proxy API.

Thuộc tính mở rộng chung

Các thuộc tính sau có sẵn cho mỗi tiện ích.

Tài sản Mô tả Mặc định Bắt buộc
name Tên mà bạn đang đặt cho cấu hình của tiện ích này. Không có
packageName Tên của gói tiện ích do Apigee Edge cung cấp. Không có
version Số phiên bản của gói tiện ích mà bạn đang định cấu hình tiện ích. Không có
configuration Giá trị cấu hình cụ thể cho tiện ích bạn đang thêm. Xem Thuộc tính cho gói tiện ích này Không có

Các thuộc tính cho gói tiện ích này

Thuộc tính Mô tả Mặc định Bắt buộc
topic Chủ đề để xuất bản. Lấy giá trị này từ dịch vụ Pub/Sub, chẳng hạn như từ bảng điều khiển Google Cloud cho dịch vụ này. Ví dụ: tên chủ đề có thể có dạng projects/GCP-PROJECT-ID/topics/TOPIC-NAME Không có. Có.
credentials Khi được nhập vào bảng điều khiển Apigee Edge, đây là nội dung của tệp khoá tài khoản dịch vụ. Khi được gửi bằng API Quản lý, đây là giá trị được mã hoá base64 được tạo từ tệp khoá tài khoản dịch vụ. Không có. Có.