为什么在使用Webhooks时需要排队?

时间:2018-09-03 23:14:21

标签: http networking webhooks

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

我了解的是,new RegExp('['+arr[1]+']', 'gi').test(arr[0]); 只是一个webhook,您对此URL进行了POST请求,然后根据正文/数据进行了一些处理的请求。那么,为什么我需要对数据进行排队并将其存储在URL中,然后再次遍历数据库并执行这些操作。

2 个答案:

答案 0 :(得分:1)

如果Webhook非常紧密地多次调用,则您需要一些防止冲突的方法。

尽管不一定要排队。如果webhook执行数据库查询和更新,则可以使用事务确保每次调用都是原子操作。

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

答案 1 :(得分:1)

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

其中之一是由于响应时间回到了Webhook请求者(源)。许多来源都希望尽快获得响应(HTTP状态200),以便他们可以从Webhook系统中将请求出队。如果处理Webhook需要花费一些时间,则消息来源通常会建议您使用队列来推迟与Webhook的200响应异步的冗长过程。

另一个可能的原因可能是删除重复的请求。对于Webhooks,不能保证每个事件只会收到一个请求。队列可用于重复删除这些请求。

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