我在 heroku 上有一个 REST 服务器。它将为 REST 服务提供 N-dynos,为工作人员提供 N-dynos。
本质上,我有一些长期运行的休息请求。当这些进来时,我想将它们委托给其中一名工作人员并给客户端一个重定向以轮询操作并最终返回操作结果。
为此,我将使用 RedisToGo 的 JEDIS/REDIS。据我所知,有两种方法可以做到这一点。
- 我可以使用 PUB/SUB 功能。让发布者为工作结果创建唯一身份,并在重定向 URI 中将这些身份返回给 REST 客户端。
- 本质上是一样的,但不是 PUB/SUB 而是使用 RPUSH/BLPOP。
我不确定#1的优势是什么。例如,如果我有一个名为 LongMathOperation 的任务,似乎我可以简单地为此列出一个列表。列表元素是 JSON 对象,具有数学运算参数以及由 REST 服务器生成的用于放置结果的 UUID。然后所有工作人员 dynos 将只有阻塞 BLPOP 调用,第一个将获得工作,处理它,并使用 UUID 的键将结果放入 REDIS。
说得通?所以我的问题是“为什么使用 PUB/SUB 会比这更好?” PUB/SUB 在这里带来了什么我想念的东西?
谢谢!