在 C++ 中修改 Grpc 双向流式处理期间的元数据

Modify Metadata during Grpc Bidirectional Streaming in C++

本文关键字:处理 元数据 C++ 修改 Grpc      更新时间:2023-10-16

使用异步双向流,我是否可以创建一个客户端流(ClientAsyncReaderWriter(并在ClientContext中为该流上发送的每个请求修改元数据值?此外,在服务器端,我是否可以使用传入客户端流的 ServerContext 为在双向流上发送回客户端的每个响应发送修改后的元数据值。请让我知道是否有办法做到这一点,因为我不想为每个元数据值维护多个流。我想使用相同的流,并为在该双向流上交换的每个请求/响应的密钥发送不同的元数据值。

这是故意不支持的。

元数据应位于每个双向流的 RPC 层;而不是每个请求/响应。 如果您希望按请求/响应传达信息,则应将其放在请求/响应中。

元数据旨在用于同一流中的所有请求/响应。

元数据与流相关联;请参阅文档 https://github.com/grpc/grpc/blob/master/CONCEPTS.md#abstract-grpc-protocol

有客户端拦截器 https://github.com/grpc/grpc/blob/master/include/grpcpp/impl/codegen/client_interceptor.h 这也许能有所帮助

这些测试显示了如何使用拦截器的示例: https://github.com/grpc/grpc/blob/master/test/cpp/end2end/client_interceptors_end2end_test.cc