【发布时间】:2020-03-24 14:14:43
【问题描述】:
在 gRPC 中,我想了解有关服务器处理请求方式的更多信息。
请求是否并行执行?或者服务器是否为每个请求生成一个新线程,并并行执行它们?有没有办法修改这种行为?我知道在客户端流式传输 rpc 中,消息顺序是有保证的。
- 如果我将请求 A 和请求 B 发送到同一个 RPC,是否可以保证 A 在 B 开始处理之前先执行?还是它们各自都有自己的线程并并行执行,不能保证 A 在 B 之前完成。
理想情况下,我想向服务器发送请求,服务器确认收到请求,然后将请求添加到队列中以按顺序处理,并在处理完毕后返回响应。我正在探索的一种方法是使用外部任务队列(如 RabbitMQ)对服务完成的工作进行排队,但我想知道是否有更好的方法。
另外——在一个有点相关的注释上——gRPC 是否有一个本机重试计数器机制?我有一个特别容易出错的 RPC,它可能必须重试多达 3 次(重试之间有任意延迟)才能成功。这也可以用 RabbitMQ 实现。
【问题讨论】:
标签: java concurrency microservices grpc grpc-java