Laravel Web 应用程序中的 SOAP Web 服务调用:队列、错误处理和重试

SOAP Webservice Calls in a Laravel Web Application: Queue, Error Handling and Retries

我正在使用 Laravel 构建一个电子商务网络应用程序,用户可以在其中购买东西,这没什么特别的。

有趣的是,webapp 应该POST 向外部服务器中的 web 服务发送命令

对于此要求,我需要:排队、错误处理和重试 用于可能失败的请求。

几年前我所做的是创建一个 artisan command 来收集订单 (Order::where('sap_status',0)->get()) 并循环那个合集。

因此,对于每个订单,如果调用已成功完成,我会进行 SOAP 调用并标记 sap_status = 1。

然后我创建了一个 Laravel 作业,每 X 分钟运行一次并调用上面提到的 artisan 命令。

所以,问题是:这是满足此要求的好方法吗?如何做得更好或改进?

提前致谢!

是的 Laravel 数据库中的作业 + 命令 + 标志的组合就可以了。

为了改进,您可以开始使用 Laravel 队列,并在 Q (https://laravel.com/docs/8.x/queues) 中启动该作业。

通常作业的处理和调度是在异步模式下完成的 (https://laravel.com/docs/8.x/queues#dispatching-jobs)。

如果需要,您可以随时以同步模式(不是 Q)启动作业 https://laravel.com/docs/8.x/queues#synchronous-dispatching

最重要的是,您可以使用 Redis 来管理 Q (https://laravel.com/docs/8.x/queues#redis)。

本地和服务器上的 Laravel 设置都非常简单。

对于 SOAP 部分,最好直接使用 PHP SOAP,或者在其上创建一个包装器,然后专注于正确处理 errors/exceptions/success 以保持订单上的标志已更新。