rest - 如何实现消费者和生产者之间的快速和慢速工作人员之间的通信?
问题描述
我正在为我的情况寻找一种模式和现有实现:我有使用 REST API 的同步 soa,实际上我使用 REST 实现了远程过程调用。而且我有一些处理请求很慢的工作人员(大约 30 秒),并且由于某些请求的某些许可证限制,我只能按顺序处理它们(请参阅系统设置)。
有什么推荐的方式来实现这种情况下的沟通?
当消费者位于防火墙后面并且我无法轻松地向他发送有关已完成任务的通知并且我可能无法让消费者使用我的消息代理时,我该如何混合同步和异步通信?
Worker 使用 Flask 和 gunicorn 在 Python 中实现。目前我正在使用同步 REST 接口并允许延迟,因为我只有快速的工作人员。我查看了 Kafka 和 RabbitMq,它们适合后端通信,但是生产者如何与消费者通信?
如果消费者触发 API 请求,我的生产者可以返回代码 202,那么生产者应如何通知消费者结果可用?消费者是否必须轮询生产者以获得结果?
此外,如果我使用消息代理并且我的网关代表消费者行事,它应该有一个请求注册表(我现在已经为每个请求提供了 GUID)和结果,你会推荐哪种方法来实现它?
解决方案
推荐阅读
- python - MySQL 和 Python,搜索数据库
- sql - 如何选择 cte 一次更新多个表列?
- analytics - 网站究竟如何连接到 adobe 分析?
- python - 对象内的条件过滤 Django
- hive - Hive 在一个连接中使用了多少个 MapReduce 作业?
- python - 连接两个数据框,具有一些重叠的日期索引,结果数据框默认采用“左”,除了“左”是 NaN
- javascript - 如何将 Javascript keyCode 转换为 charCode?
- ansible - Ansible:如何在一处更换主机
- php - PHP 按日期分组数组
- python - 根据关键字选择多个 PDF 并使用 Python boto3 将它们上传到 S3 存储桶中