gpt4 book ai didi

php - laravel队列 worker 中的持久连接

转载 作者:行者123 更新时间:2023-12-02 03:43:13 25 4
gpt4 key购买 nike

我正在尝试使用第三方库在我的 Laravel 应用程序上设置服务以连接到提供商。

其代码如下

$connection = new CustomConnection();
$connection->refresh();
$connection->sendMessage('user@myapp.com', ['message'=>'something', 'ttl'=>3600]);
$connection->refresh();
$connection->sendMessage('user2@myapp.com', ['message'=>'something', 'ttl'=>3600]);
$connection->close();

我的目标是在通过 laravel queue worker 发送消息时保持连接连接。

类似于如果 que worker 建立

$connection = new CustomConnection();
$connection->refresh();

每 5 秒执行一次 $connection->refresh() & 每当作业被添加到队列中时它应该执行

$connection->sendMessage('user@myapp.com', ['message'=>'something', 'ttl'=>3600]);
$connection->refresh();

代码块。

我不知道 laravel 的核心队列在后端是如何工作的,我是否可以覆盖它的功能以及如何覆盖。

谢谢。

最佳答案

在您的服务提供商中,将连接(或使用该连接的服务)注册为单例。将此声明为您的作业的依赖项,并且您的所有作业在队列工作程序的生命周期内都将具有相同的连接/服务实例。

你不可能每五秒执行一次 $connection->refresh() 。如果此调用的目的是某种心跳/健康检查,请收听 queue-related events并改用这些。 JobProcessing、JobProcessed、JobFailed 和 Looping 的组合将允许您在作业执行之前和之后执行代码。您可以使用这些来评估您是否应该调用 $connection->refresh(),例如自上次调用以来是否已经过去了至少五秒钟。

在分派(dispatch)作业时没有可用于运行代码的事件。

不要试图覆盖队列系统的内部运作。不同的 Laravel 版本之间没有向后兼容性的 promise ,你必须跟踪上游引入的所有(可能的)细微变化。

关于php - laravel队列 worker 中的持久连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47773458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com