Pub/Sub の操作

Pub/Sub はフルマネージドのリアルタイム メッセージング サービスであり、個別のアプリケーション間でメッセージを送受信できます。このページでは、Cloud Tools for PowerShell を使用して Pub/Sub を管理する方法について説明します。トピックの作成、トピックへのメッセージのパブリッシュ、トピックへのサブスクリプションの作成、トピックからサブスクリプションへのメッセージの pull の簡単な例を示します。

Pub/Sub コマンドレットの詳細については、Cloud Tools for PowerShell コマンドレット リファレンスをご覧ください。一般的な Pub/Sub の詳細については、Pub/Sub の概要をご覧ください。

トピックの作成

パブリッシャー アプリケーションによって、メッセージが作成され、トピックに送信されます。New‑GcpsTopic コマンドレットを呼び出して、特定のトピックにインスタンスを作成できます。アクティブな gcloud 構成にプロジェクトがある場合は、-Project パラメータを使用する必要はありません。

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

トピックへのメッセージのパブリッシュ

メッセージをトピックにパブリッシュするには、Publish‑GcpsMessage コマンドレットを使用します。

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

1 つのリクエストで複数のメッセージを同じトピックにパブリッシュするには、New‑GcpsMessage コマンドレットを使用してメッセージの配列を作成し、Publish‑GcpsMessage コマンドレットに渡します。

# 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 コマンドレットを呼び出して、特定のトピックにインスタンスを作成できます。アクティブな gcloud 構成にプロジェクトがある場合は、-Project パラメータを使用する必要はありません。

デフォルトでは、作成されたサブスクリプションは pull サブスクリプションです。つまり、サブスクライバーはトピックからメッセージを pull します。-PushEndpoint を使用して push サブスクリプションを作成できます(Pub/Sub はサブスクライバーが選択したエンドポイントにメッセージを push します)。

# 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"

サブスクリプションへのメッセージの pull

サブスクリプションへのメッセージを pull するには、Get‑GcpsMessage コマンドレットを使用します。 デフォルトでは、少なくとも 1 つのメッセージを取得するまで、コマンドレットはブロックされます。 ブロックを防ぐには、パラメータ -ReturnImmediately を使用します。 パラメータ -AutoAck を使用すると、取得したすべてのメッセージに対してコマンドレットから確認応答を自動的に送信することもできます。このパラメータを使用しない場合は、Send‑GcpsAck コマンドレットを使用して確認応答を送信する必要があります。未確認のメッセージは、メッセージの確認応答期限が切れると、再び pull できるようになります。

# 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