微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Aws sns 不适用于 Laravel 排队通知

如何解决Aws sns 不适用于 Laravel 排队通知

我有一个 Laravel 6.0 项目,使用 ses 驱动程序发送电子邮件

为了跟踪退回邮件、投诉等,我使用了 sns。

所有配置都已到位。如果发送邮件,则 Amazon 正确生成 sns 消息并由 Laravel 接收。这是因为在 config/service.PHP 中有 ConfigurationSetName 值。

问题开始于通过电子邮件发送的排队通知

仅对于此类生成的电子邮件,sns 工作流程甚至不会启动。根本没有通知。确定 ConfigurationSetName 已设置,我仔细检查了配置的语法,但看起来不是,或者 Laravel 忽略了它。

我再说一遍,对于简单的电子邮件,一切正常。只有当电子邮件是从排队的通知生成时,我才会遇到这个问题。

非常感谢任何帮助,我真的不知道问题出在哪里。

解决方法

最后我发现了问题,即使我不了解情况。

重点是我如何实现 ShouldQueue 契约。

我在通知类本身上设置了 ShouldQueue,而不是在可邮寄类上。所以 Laravel 会触发一个排队的通知。一旦队列工作人员提出了详细说明,通知就会生成一个 Mailable。这不起作用,根本没有 SNS 通知。

现在我在 Mailable 类上移动了 ShouldQueue 实现,这解决了问题。

所以,现在 Laravel 会触发生成排队的 Mailable 的通知。当队列工作人员收到详细说明时,发送电子邮件,现在 SNS 正常工作。

代码中没有其他变化,只是将 ShouldQueue 的实现从 Notification 移到 Mailable 即可。

我想知道为什么......但现在它起作用了,对我来说实施似乎很好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。