Use Google App Engine's NDB as a message queue?
有没有人尝试使用 NDB 作为消息队列?我们有几个消费者和生产者,他们可能想做广播、多播和发布订阅。我已经阅读了几篇关于为什么使用 RDBMS 作为消息队列不好的文档。但就我而言,我的应用程序可以容忍几秒钟的延迟。所以最终的一致性应该不是什么大问题,因为 NDB 中几乎所有的复制都应该在几秒钟内完成。在消息排序方面,我可以使用时间戳。
另一种选择是将 NDB 的强一致性功能与缓冲区(例如 memcache)一起使用。
为什么不使用任务队列?它针对推送(广播、多播)和拉取(订阅)进行了优化。
- 感谢您的反馈意见。我阅读了任务队列的文档,但它似乎更多地用于计算任务。或者任务有效负载是"消息",请求处理程序和特定于应用程序的 URL 指定接收者的想法?广播基本上会指定多个 URL 和请求处理程序?是否有使用任务队列进行通信的在线示例?
-
我认为任何有用的示例都必须在您自己的应用程序的上下文中。您能否提供更多有关您希望如何在问题中使用消息队列的详细信息?
-
假设一个 Web 服务 A 想要通过电子邮件 Web 服务 B 向一组人员发送电子邮件。我想我可以为此使用延迟任务(或推送任务队列)。每个任务都包含电子邮件 Web 服务的 URL、其 Web 请求处理程序以及由消息正文和接收者 ID 组成的有效负载。
-
这是任务队列的一个很好的用途。如果任务因任何原因失败(有时会在电子邮件传递中发生),它将稍后重试。我总是以这种方式从 AppEngine 发送电子邮件。
-
谢谢。您知道是否有办法在任务队列中订购任务完成?我读到不能保证任务按照它们出现在队列中的顺序完成,但我想知道是否有一些解决方法。
-
你会创建一个包含所有重要细节的新问题吗?例如,什么定义了顺序:时间戳?如果一个任务失败了,所有其他任务是否应该等到它以后成功?这将是一个有用的问题。
-
当然,这里是:stackoverflow.com/questions/29973984/…