为什么我们在使用 webhook 时需要一个队列?

问题描述 投票:0回答:3

任何人都可以澄清使用队列的目的是什么吗?

我的理解是

webhook
只是一个
URL
,你对那个
POST
做一个
URL
请求,然后根据请求的正文/数据做一些事情。那么为什么我需要对数据进行排队并将其存储在
database
然后再次遍历数据库并执行这些东西。

http networking webhooks
3个回答
4
投票

简短的回答是,你不必使用队列。 Webhook 只是一个 HTTP 请求(通常是 POST),用于通知您的应用程序某种类型的事件。您可能想要考虑队列的原因是因为您可能会遇到典型问题。

其中一个原因是返回到 webhook 请求者的响应时间(来源)。许多来源希望尽快得到响应(HTTP 状态 200),以便他们可以将请求从他们的 webhook 系统中取出。如果处理 webhook 需要一些时间,消息来源通常会建议您使用队列来延迟较长的异步过程,以异步响应对 webhook 的 200 响应。

另一个可能的原因是删除重复的请求。使用 webhook 无法保证您每次事件只会收到一个请求。队列可用于删除这些请求。

如果可能的话,我会建议你坚持使用一个简单的请求处理程序,然后在遇到问题时发展一个更复杂的处理程序。如果您遇到上述问题,请考虑将队列作为一种潜在的设计方法。


3
投票

如果多次调用 webhook 非常接近,您需要一些方法来防止冲突。

但不一定非要排队。如果 webhook 执行数据库查询和更新,您可以使用事务来确保每次调用都是原子的。

在这方面,它与任何其他网络实用程序没有什么不同。您应该在处理 Web 表单的脚本中做类似的事情。


0
投票

通常,webhooks 与 Rabbitmq 和 Kafka 等消息队列一起使用。当您的应用程序严重依赖 webhook 来处理同步实时数据等关键事情时,可以使用此方法,在消息队列的帮助下,您可以确定服务器何时关闭或您的系统无法处理高流量队列可以代表您处理 webhook并确保没有 webhook 数据丢失。因此,如果您的应用程序不需要 webhook 来处理关键事情,您可以使用 URL 方法,否则您应该使用 Queue。

© www.soinside.com 2019 - 2024. All rights reserved.