并发控制是 Pub/Sub 中的一项可用功能 高级客户端库。 使用低级库时,您还可以实现自己的并发控制。
是否支持并发控制取决于客户端库的编程语言。对于支持并行线程的语言实现(如 C++、Go 和 Java),客户端库会默认选择线程数。
此选择可能不是您的应用的最佳选择。例如: 如果订阅者应用未跟上传入消息 并且不受 CPU 限制,您必须增加线程数。对于 CPU 密集型消息处理操作,减少线程数可能是适宜的办法。
并发控制配置
并发控制变量的默认值和变量名称可能会因客户端库而异。例如,在 Java 客户端中,
配置并发控制的方法包括
setSystemExecutorProvider()
、setExecutorProvider()
和setParallelPullCount()
。
借助 setParallelPullCount(),您可以决定要打开的数据流数量。如果订阅方客户端可以处理的数据量超过单个串流(10 MB/s)上发送的数据量,您可以打开更多串流。
借助 setExecutorProvider(),您可以自定义用于处理消息的执行器提供程序。例如,您可以将执行器提供程序更改为返回一个共享执行器,该执行器在多个订阅方客户端之间具有有限数量的线程。此配置有助于限制 已创建 个会话。
setSystemExecutorProvider() 可让您自定义执行器提供程序 用于租赁管理。 通常,除非您想在
setExecutorProvider
和setSystemExecutorProvider
中使用相同的执行器提供程序,否则不应配置此值。例如,您可以使用同一个执行器 否则会严重影响。 使用相同的值会限制客户端中的线程数量。
用于并发控制的线程总数取决于客户端库中传入的执行器提供程序和并行拉取次数。
并发控制的代码示例
C++
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
Go
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Go API 参考文档。
Java
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Java API 参考文档。
Ruby
在尝试此示例之前,请按照《快速入门:使用客户端库》中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
后续步骤
了解您可以为订阅配置的其他提交选项: