gpt4 book ai didi

webhooks - 即使在发送确认 HTTP 状态代码 200 后,Webhook 回调也不会停止

转载 作者:行者123 更新时间:2023-12-05 05:22:13 30 4
gpt4 key购买 nike

我正在研究 Ruby on Rails 应用程序与 BigCommerce 的集成。我已注册回调以接收有关订单创建或发货创建的通知。下订单时,它会向我的服务器发送回调,然后我会进行一些处理并使用 HTTP 状态代码 200 确认请求发送方,这与文档中提到的相同。但是 webhook 仍然会在一段时间内触发回调。谁能告诉我如何确认 webhook 并停止接收来自 webhook 的回调?

这是我处理它的示例代码。

order_id =params['data']["orderId"].to_i
store_hash = params['producer'].split('/').last
store = Store.find_by(store_hash: store_hash)
connection = prepare_connection(store, store_hash)

vars = prepare_variable_hash(order_id, connection)

send_notification_email(vars['email'],
store.email,
q_subject.html_safe,
q_body.html_safe
)

render nothing: true, status: 200

在我的服务器控制台中,我收到以下日志。

Rendered text template (0.0ms)
Completed 200 OK in 11883ms (Views: 0.6ms | ActiveRecord: 0.7ms)

我们是否必须在回复时设置任何标题?还是状态码 200 就可以?

最佳答案

发回 200 响应是您应该做的,以提醒 BigCommerce 端您已收到 webhook。您遇到的问题是您超过了 BigCommerce 方面的 10 秒超时限制。

Completed 200 OK in 11883ms (Views: 0.6ms | ActiveRecord: 0.7ms)

根据上述内容,您的系统需要超过 10 秒的时间才能将您的响应返回给 BigCommerce。因此,webhook 服务器在收到您的响应并将 webhook 放入重试队列之前关闭连接。

我建议不要在接收时尝试对 webhook 进行如此多的处理。队列系统更适合处理 BigCommerce webhook。这意味着当你收到一个 webhook 时,你应该将它放入你端的队列中并立即给出 200 响应。然后,您将拥有一组单独的工作人员,这些工作人员正在处理来自您设置的队列的 webhook 消息。

不可能增加 BigCommerce 服务器上强制执行的超时限制。

关于webhooks - 即使在发送确认 HTTP 状态代码 200 后,Webhook 回调也不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41095595/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com