【发布时间】:2020-10-11 14:33:36
【问题描述】:
我正在尝试查找有关通过异步 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);
您能帮我举一个简单的异步代码示例吗?
【问题讨论】:
标签: c++ asynchronous google-cloud-platform grpc google-cloud-pubsub