使用 Cloud Pub/Sub

Cloud Pub/Sub 是一项全托管式实时消息传递服务,可让您在独立的应用之间发送和接收消息。此页面介绍如何使用 Cloud Tools for PowerShell 管理 Cloud Pub/Sub,并通过一个简单示例,说明如何创建主题、向主题发布消息、创建对主题的订阅以及将消息从主题拉取到订阅。

如需详细了解 Cloud Pub/Sub cmdlet,请参阅 Cloud Tools for PowerShell cmdlet 参考。如需从整体上了解 Cloud Pub/Sub,请参阅 Cloud Pub/Sub 概览

创建主题

发布者应用创建主题并将消息发送到主题。您可以调用 New‑GcpsTopic cmdlet 以在特定主题中创建实例。如果您的活动 gcloud 配置有项目,则不必使用 -Project 参数。

# Creates topic "my-topic" in the default project.
New-GcpsTopic -Topic "my-topic"

向主题发布消息

您可以使用 Publish‑GcpsMessage cmdlet 向主题发布消息。

# Publishes the message with data "This is a test" to topic "my-topic".
Publish-GcpsMessage -Data "This is a test" -Topic "my-topic"

要使用单个请求向同一主题发布多条消息,可以使用 New‑GcpsMessage cmdlet 创建一系列消息并传递给 Publish‑GcpsMessage cmdlet。

# Creates two messages.
$messageOne = New-GcpsMessage -Data "This is a test"
$messageTwo = New-GcpsMessage -Data "Data" -Attributes @{"key" = "value"}

# Publish the messages to topic "my-topic".
Publish-GcpsMessage -Message @($messageOne, $messageTwo) -Topic "my-topic"

创建对主题的订阅

订阅者应用创建对主题的订阅以便从其接收消息。您可以调用 New‑GcpsSubscription cmdlet 以在特定主题中创建实例。如果您的活动 gcloud 配置有项目,则不必使用 -Project 参数。

默认情况下,创建的订阅是一个拉取订阅,这意味着订阅者将从主题中拉取消息。您可以使用 -PushEndpoint 创建推送订阅(Pub/Sub 将把消息推送到订阅者选择的端点)。

# Creates pull subscription "pull-subscription" to topic "my-topic" in the default project.
New-GcpsSubscription -Topic "my-topic" -Subscription "pull-subscription"

# Creates push subscription "push-subscription" to topic "my-topic".
New-GcpsSubscription -Topic "my-topic" `
                     -Subscription "push-subscription" `
                     -PushEndpoint "http://www.example.com"

为订阅拉取消息

您可以使用 Get‑GcpsMessage cmdlet 为订阅拉取消息。默认情况下,cmdlet 将保持阻止直至检索到至少一条消息。要避免阻止,请使用参数 -ReturnImmediately。如果使用了参数 -AutoAck,cmdlet 还会自动为每个检索到的消息发送确认。如果没有,则必须使用 Send‑GcpsAck cmdlet 发送确认。在消息的确认截止期限到期后,未确认的消息可再次用于拉取。

# Pulls messages from subscription "my-subscription" and sends out acknowledgement automatically.
Get-GcpsMessage -Subscription "my-subscription" -AutoAck

# Pulls messages from subscription "my-subscription" and sends out acknowledgement with Send-GcpsAck.
$messages = Get-GcpsMessage -Subscription "my-subscription"
Send-GcpsAck -InputObject $messages