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"