message queue(比如kafka)一般用来处理producer 和consumer能力不匹配的情况,假设server a 需要call server b,由于server b处理的很慢,所以我在中间加了一个message queue,我想问下这个时候我怎么吧server b的response 返回给server a?还是说我这里不能用message queue,而是用async rpc call(request里面待一个callback),那这个时候 server b内存里面会有一个task queue,server b返回response是在同一个http connection里还是说server b重新建立一个通向server a 的http request 吧response 返回过去?
用了 message queue 以后,处理就变成 async 了,这意味着用户发送的 request 会在处理之前被返回。所以 message queue 的处理结果一般是不需要给用户返回回去的,比如说系统内部的一些 bookkeeping。如果用户需要直接实时收到反馈,那么就不应该使用 message queue。如果 message queue 的处理结果需要反馈给用户,但是可以在一段时间之后,那么可以考虑用 websocket 这类方法 push 消息给用户。
1 个赞
有时候async之后可能会去主动pull result?或者register一个call back url?
Async Job 可以运行任何逻辑,但本质还是 async 的。Caller 会延迟得到反馈。