【发布时间】:2017-07-07 21:45:29
【问题描述】:
我在网上搜索,但没有找到任何解决我的问题的方法。 我正在使用带有 SQS 的 laravel 5.2 作为队列驱动程序。 我正在分派一项工作,以便向 100 个用户发送电子邮件。 该作业接收“文章”模型和“用户”数组,每个用户都应该收到一封带有“文章”的电子邮件。
当它是 10 个用户时,一切正常。 当它是 100 个用户时,我收到来自亚马逊 SQS 服务的错误消息“400 bad request”,响应是:“原因:消息必须短于 262144 字节。” 由于用户数组的原因,我了解到作业的请求太大。
我想拆分用户的数组以将作业的请求大小减少到 256kb 以下。 我可以通过循环遍历用户的数组来做到这一点,每次达到接近 256kb 时,我都会用文章和用户分派一个作业,然后我将继续遍历数组中的其余用户。
- 在我们调度当前作业请求大小之前,有什么方法可以检查它?
- 您有更好的解决方案吗?
非常感谢您提前 狮子座。
【问题讨论】:
-
是否有理由让您发送一份包含 100 篇文章的工作,而不是发送 100 个工作,每个工作包含 1 篇文章?这首先是队列系统的一大特点。
-
@CmdrSharp 我正在发送一项包含 100 个项目的作业(1 个包含 100 个用户的事件),以减少队列请求。每个 EVENT 都将运行在用户身上,并将 EMAIL 发送给 100 个用户中的同一个(取决于条件),所以最后我将发送 100 个工作来发送 EMAIL。 SO 1 个 EVENT 作业,包含 100 个用户和 100 个要发送电子邮件的作业。
标签: php laravel laravel-5 eloquent amazon-sqs