首页 > 解决方案 > Google PubSub 排序密钥问题,未启用消息排序

问题描述

在将 google cloud pubsub 消息发布到启用了排序的订阅时,我遇到了一个问题。

我有一个 pubsub 主题:test_order_topic带有消息排序的推送订阅:已启用(enableMessageOrdering: true)。

但是当使用 python Google Cloud 函数发布到这个主题时:

publisher.publish(
   'projects/project_id/topics/test_order_pubsub',
   json.dumps({ "index": len(WORDS) }).encode('utf-8'),
   ordering_key='key1'
)

我收到以下错误:

未启用消息排序时,无法使用排序键发布消息。

test_order_pubsub没有其他订阅

你能帮忙解决这个问题吗?谢谢!

标签: google-cloud-platformgoogle-cloud-functionsgoogle-cloud-pubsub

解决方案


使用 Cloud Pub/Sub 客户端库发布时,需要在客户端库中启用排序。这可确保客户端库按正确顺序排列消息。为此,请enable_message_ordering在以下位置设置属性PublisherOptions

from google.cloud import pubsub_v1

publisher_client = pubsub_v1.PublisherClient(
    publisher_options = pubsub_v1.types.PublisherOptions(
        enable_message_ordering=True,
    )
)

推荐阅读