首页 > 解决方案 > 如何实现消费者和生产者之间的快速和慢速工作人员之间的通信?

问题描述

我正在为我的情况寻找一种模式和现有实现:我有使用 REST API 的同步 soa,实际上我使用 REST 实现了远程过程调用。而且我有一些处理请求很慢的工作人员(大约 30 秒),并且由于某些请求的某些许可证限制,我只能按顺序处理它们(请参阅系统设置)。

有什么推荐的方式来实现这种情况下的沟通?

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

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

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

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

标签: restapache-kafkarpcsoaevent-driven

解决方案


生产者- 产生消息的代理消费者- 可以处理消息并实现处理消息的逻辑的代理 在此处输入图像描述


推荐阅读