本文档介绍了如何将并发控制与发布到主题的消息搭配使用。
通过并发控制,您可以替换客户端库用于发布消息的默认后台 (I/O) 线程数。这样,发布者客户端便可并行发送消息。
并发控制是 Pub/Sub 高级别客户端库中的一项可用功能。使用低级库时,您还可以实现自己的并发控制。
是否支持并发控制取决于客户端库的编程语言。对于支持并行线程的语言实现(如 C++、Go 和 Java),客户端库会默认选择线程数。
本页面介绍了并发控制的概念,以及如何为发布商客户端设置此功能。如需为订阅者客户端配置并发控制,请参阅通过并发控制处理更多消息。
准备工作
在配置发布工作流之前,请确保您已完成以下任务:
所需的角色
如需获得将消息发布到主题所需的权限,请让您的管理员为您授予主题的 Pub/Sub Publisher (roles/pubsub.publisher
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您需要获得其他权限才能创建或更新主题和订阅。
并发控制配置
并发控制变量的默认值和变量名称可能因客户端库而异。例如,在 Java 客户端库中,用于配置并发控制的方法为 setExecutorProvider()
和 setChannelProvider()
。如需了解详情,请参阅 API 参考文档。
setExecutorProvider() 可让您自定义用于处理发布响应的执行程序提供程序。例如,您可以将执行程序提供程序更改为在多个发布者客户端中返回线程数量有限的单个共享执行程序。此配置有助于限制创建的线程数。
借助 setChannelProvider(),您可以自定义用于打开与 Pub/Sub 的连接的渠道提供程序。通常情况下,您无需配置此值,除非您想在多个发布商客户端中使用同一渠道。在过多的客户端之间重复使用某个渠道可能会导致
GOAWAY
或ENHANCE_YOUR_CALM
错误。如果您在应用的日志或 Cloud Logs 中看到这些错误,请创建更多渠道。
并发控制的代码示例
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
后续步骤
如需限制 Pub/Sub 存储消息数据的位置,请参阅限制 Pub/Sub 资源位置。
如需详细了解如何接收消息,请参阅选择订阅类型。