Google Cloud Pubsub Async Streaming API in C++

Google Cloud Pubsub Async Streaming API in C++

本文关键字:API in C++ Streaming Async Cloud Pubsub Google      更新时间:2023-10-16

我正在尝试查找有关通过异步 grpc 使用 Pubsub Streaming API 的文档,但找不到任何文档。

我有这个简单的代码来读取主题中的所有消息:

auto creds = grpc::GoogleDefaultCredentials();
auto stub = std::make_unique<Subscriber::Stub>(
grpc::CreateChannel("pubsub.googleapis.com", creds));
ClientContext context;
std::unique_ptr<ClientReaderWriter<
StreamingPullRequest, StreamingPullResponse>> stream(
stub->StreamingPull(&context));
StreamingPullRequest request;
request.set_subscription(
"projects/test/subscriptions/test-subscription");
request.set_stream_ack_deadline_seconds(10);
stream->Write(request);
StreamingPullResponse response;
while (stream->Read(&response)) {
StreamingPullRequest ack_request;
for (const auto &message : response.received_messages()) {
ack_request.add_ack_ids(message.ack_id());
}
stream->Write(ack_request);
}

基本上我想做同样的事情,但使用异步 rpc 调用,所以这段代码在回调中调用:

StreamingPullRequest ack_request;
for (const auto &message : response.received_messages()) {
ack_request.add_ack_ids(message.ack_id());
}
stream->Write(ack_request);

你能帮我举一个简单的异步代码示例吗?

目前Google Cloud Platform C++Pub/Sub 库尚未由供应商正式宣布,并且没有用于实现的 ETA,因此代码库作为概念证明存在,仍然没有完整的文档,没有像样的使用示例。您可以跟踪社区在此 Github 线程之后进一步开发库的工作。

据我所知,您正在寻找通过异步 gRPC 调用执行 StreamingPull 的任何见解,查看 @Manuel Menzella 发布的答案,我建议您查看他在概念上适合您的用例的方法。