将来自 AWS sdk 的 SesClient 实例发送到 Laravel 队列 php

Send to a Laravel Queue an instance of SesClient from AWS sdk for php

我正在使用 php 的 Amazon sdk 通过简单电子邮件服务发送电子邮件,所有这些都使用 Lumen 框架。

我正在使用 sdk 的客户端 class 而不是 Laravel 的可邮寄 classes 因为我需要在我的电子邮件中添加一些元数据当我尝试将电子邮件推送到队列,因为来自 AWS sdk 的 SesClient 禁止序列化并且 Laravel/Lumen 使用此函数创建队列

我尝试包装 class 但它没有用我还找到了一些使用 SesClient 的包,但其中 none 允许我添加元数据

我乐于接受各种解决方案,如果您需要更多信息,请告诉我,我会回答问题

提前致谢

TL;DR

没有办法做到这一点

解释

长答案是你需要改变解决问题的方法

由于 AWS 客户端 class 在魔术方法 __sleep 上引发异常,您不能直接将 class 发送到 Laravel 队列,因为部分发送它的过程是序列化 class.

您扩展了 class 并覆盖了该方法,但是由于 AWS 客户端 class 内部的回调,这会给您带来未来的问题。

要解决这个问题,您需要从 Laravel 作业 class 中提取 class,这可以创建一个 class 来包装您的进程并在内部完成class 创建 AWS 客户端实例