【问题标题】:Modify Metadata during Grpc Bidirectional Streaming in C++在 C++ 中的 Grpc 双向流期间修改元数据
【发布时间】:2020-05-08 07:32:28
【问题描述】:

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

【问题讨论】:

    标签: c++ grpc bidi


    【解决方案1】:

    这是故意不支持的。

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

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

    【讨论】:

    • 您好,donnadionne,感谢您的回复。我的要求是在流中的每个请求/响应中注入一些信息,例如 cookie,以便服务网格内的特使代理可以使用该 cookie 对请求/响应进行散列和负载平衡。所以,你的意思是在这种情况下,我需要每个 cookie 有单独的流,以便负载平衡在每个流中工作,而不是在该流中的每个请求/响应。??
    【解决方案2】:

    【讨论】:

    • 嗨@donnadionne,我检查了拦截器功能。我不确定,对于双向流异步 grpc,我是否可以通过拦截 PRE_SEND_MESSAGE 为异步流上的每个 Write 调用添加 http2 标头信息??
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 2020-09-30
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2021-12-01
    • 2021-03-29
    相关资源
    最近更新 更多