【问题标题】:SOAP Webservice Calls in a Laravel Web Application: Queue, Error Handling and RetriesLaravel Web 应用程序中的 SOAP Web 服务调用:队列、错误处理和重试
【发布时间】:2021-11-25 22:39:06
【问题描述】:

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

有趣的是,webapp 应该将订单发布到外部服务器中的 web 服务

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

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

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

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

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

提前致谢!

【问题讨论】:

    标签: laravel soap laravel-queue


    【解决方案1】:

    是的,DB 中的 Laravel Jobs + Commands + flags 的组合可以解决问题。

    为了改进,您可以开始使用 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,或者在其之上创建一个包装器,然后专注于正确处理错误/异常/成功,以保持订单上的标志更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      相关资源
      最近更新 更多