【发布时间】:2018-09-03 23:14:21
【问题描述】:
谁能阐明使用队列的目的是什么?
我的理解是 webhook 只是一个 URL ,你向 POST 请求 URL 然后根据请求的正文/数据做一些事情。那么为什么我需要对数据进行排队并将其存储在database 中,然后再次遍历数据库并执行这些操作。
【问题讨论】:
标签: http networking webhooks
谁能阐明使用队列的目的是什么?
我的理解是 webhook 只是一个 URL ,你向 POST 请求 URL 然后根据请求的正文/数据做一些事情。那么为什么我需要对数据进行排队并将其存储在database 中,然后再次遍历数据库并执行这些操作。
【问题讨论】:
标签: http networking webhooks
简短的回答是,您不必使用队列。 Webhook 只是一个 HTTP 请求(通常是 POST),用于通知您的应用程序某种类型的事件。您可能要考虑使用队列的原因可能是您可能遇到的典型问题。
其中一个原因是返回给 webhook 请求者(来源)的响应时间。许多来源希望尽快得到响应(HTTP 状态 200),以便他们可以从他们的 webhook 系统中将请求出列。如果处理 webhook 需要一些时间,消息来源通常会建议您使用队列将较长的进程异步延迟到对 webhook 的 200 响应。
另一个可能的原因是删除重复请求。 Webhook 不能保证每个事件您只会收到一个请求。队列可用于对这些请求进行重复数据删除。
如果可能,我建议您坚持使用简单的请求处理程序,然后在遇到问题时开发更复杂的处理程序。如果遇到上述问题,请将队列视为一种潜在的设计方法。
【讨论】:
如果 webhook 被非常靠近地多次调用,您需要一些方法来防止冲突。
不过,它不一定非得是一个队列。如果 webhook 执行数据库查询和更新,您可以使用事务来确保每次调用都是原子的。
在这方面,它与任何其他网络实用程序都没有什么不同。您应该在处理 Web 表单的脚本中执行类似的操作。
【讨论】: