Php laravel队列工作器中的持久连接

Php laravel队列工作器中的持久连接,php,laravel,laravel-5,Php,Laravel,Laravel 5,我正在尝试在我的laravel应用程序上设置一个第三方库服务,以便连接到提供商 其代码如下 $connection = new CustomConnection(); $connection->refresh(); $connection->sendMessage('user@myapp.com', ['message'=>'something', 'ttl'=>3600]); $connection->refresh(); $connection->send

我正在尝试在我的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队列工作者发送消息时保持连接

比如说,如果你

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

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

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


谢谢。

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

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

在分派作业时,没有可用于运行代码的事件

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