c# - 使用 gRPC 共享非常大的文件

标签 c# grpc

我想使用 gRPC 在端点和服务器之间共享非常大的文件(更多的 6gb)。

这是一个合适的解决方案吗?
我有什么选择?

我工作的公司有一个应用程序,该应用程序分隔在多个彼此不了解的端点中,它们使用 RabbitMQ 和使用发布/订阅模式进行对话。
因为RabbitMQ对每条消息有4gb的限制,不能直接使用,需要实现外部微服务。

我的想法是将这个系统与一个微服务集成在一起,在这个微服务中,发送者可以上传一个大附件并接收一个 key 。然后它在要发送的实际消息中插入 key 。然后接收者可以使用消息中的 key 从微服务下载附件副本。

最佳答案

如果您真的想通过 gRPC 执行此操作,那么关键是使响应成为“服务器流式处理”,这样它就不会在一个块中返回 6GiB,而是返回您需要的任何大小的多个块,例如可能 128kiB 一次时间(或其他);你可以这样做:

syntax = "proto3";
message FileRequest {
    string id = 1; // or whatever
}
message FileResponse  {
    bytes chunk = 1; // some segment of the file
}

service SearchService {
  rpc GetFile(FileRequest) returns (stream FileResponse);
}

但没有什么是自动的:现在你的工作是写回多个段。

我怀疑 Vanilla http 下载式响应可能更简单!

关于c# - 使用 gRPC 共享非常大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62470323/

相关文章:

java - Java 和 C# 上的 SHA-1 哈希

C# 字符串替换

ssl - 在 gRPC 客户端服务器通信中使用 SSL

java - 与 gRPC 的混淆

linux - gRPC + SSL + uber jar + Linux = 加载 netty-tcnative 失败

c# - 品牌化 wpf 应用程序

c# - Azure 上日期解析的意外行为

javascript - 正则表达式:字符集验证

go - 如何在 Go 中创建一个通用的 GRPC 服务器启动函数

node.js - 无法使用 Node v12.6 安装 probufJs