如何实现消费者和生产者与快速和慢速工人之间的通信?

How to implement communication between consumer and producer with fast and slow workers?

我正在寻找适合我的情况的模式和现有实现: 我有使用 REST APIs 的同步 soa,实际上我用 REST 实现了远程过程调用。我有一些慢速的工作人员,他们处理请求需要很长时间(大约 30 秒),并且由于某些请求的许可限制,我只能按顺序处理它们(参见 system setup)。

对于这种情况,有哪些建议的沟通方式?

在消费者位于防火墙后面并且我无法轻松向他发送有关已完成任务的通知并且我可能无法让消费者使用我的消息代理(如果我有消息代理)的情况下,我如何混合使用同步和异步通信?

Worker 在 Python 中使用 Flask 和 gunicorn 实现。目前我正在使用同步 REST 接口并允许延迟,因为我只有快速的工作人员。我查看了 Kafka 和 RabbitMq,它们适合后端 沟通,但是生产者如何与消费者沟通?

如果消费者触发 API 请求我的生产者可以 return 代码 202,那么生产者应如何通知消费者结果可用?消费者是否必须轮询生产者的结果?

此外,如果我使用消息代理并且我的网关代表消费者,它应该有一个请求注册表(我现在已经有每个请求的 GUID)和结果,您会推荐哪种方法来实现它?

Producer- 产生消息的代理 消费者 - 可以处理消息并实现处理消息逻辑的代理