Pub/Sub 指南
主题与订阅
# 创建主题
gcloud pubsub topics create my-topic
# 创建拉取订阅
gcloud pubsub subscriptions create my-sub \
--topic=my-topic \
--ack-deadline=60 \
--message-retention-duration=7d
# 创建推送订阅
gcloud pubsub subscriptions create my-push-sub \
--topic=my-topic \
--push-endpoint=https://my-service.run.app/push \
--ack-deadline=30
# 列出主题和订阅
gcloud pubsub topics list
gcloud pubsub subscriptions list
发布消息
# 发布单条消息
gcloud pubsub topics publish my-topic \
--message='{"event":"user_signup","user_id":"123"}' \
--attribute=source=web
# 带排序键发布
gcloud pubsub topics publish my-topic \
--message="step-1" \
--ordering-key="user-456"
拉取与确认
# 拉取消息(同步)
gcloud pubsub subscriptions pull my-sub --limit=10 --auto-ack
# 手动确认
gcloud pubsub subscriptions ack my-sub \
--ack-ids=ACK_ID_1,ACK_ID_2
# 回溯到指定时间(重放消息)
gcloud pubsub subscriptions seek my-sub \
--time="2024-01-15T10:00:00Z"
死信主题
# 创建死信主题
gcloud pubsub topics create my-topic-dead-letter
# 创建带死信策略的订阅(最多投递 5 次)
gcloud pubsub subscriptions create my-sub \
--topic=my-topic \
--dead-letter-topic=my-topic-dead-letter \
--max-delivery-attempts=5
消息顺序
# 订阅启用消息顺序
gcloud pubsub subscriptions create ordered-sub \
--topic=my-topic \
--enable-message-ordering
# 使用相同的排序键保证消息顺序
gcloud pubsub topics publish my-topic \
--message="step-1" --ordering-key="user-456"
gcloud pubsub topics publish my-topic \
--message="step-2" --ordering-key="user-456"