Метод onConnection
Метод onConnection класса PendingDispatch позволяет указать подключение очереди, которое будет использоваться для отправки задания. Первым параметром передаётся имя подключения, которое должно быть определено в конфигурационном файле config/queue.php. Если метод не вызывать, будет использоваться подключение по умолчанию.
Синтаксис
<?php
Job::dispatch()->onConnection($connection);
?>
Пример
Давайте укажем для задания подключение 'redis':
<?php
namespace AppJobs;
use IlluminateContractsQueueShouldQueue;
class SendEmailJob implements ShouldQueue
{
public function handle()
{
// Logic for sending email
echo "Email sent successfully";
}
}
?>
Отправляем задание с указанием подключения:
<?php
namespace AppHttpControllers;
use AppJobsSendEmailJob;
class EmailController extends Controller
{
public function send()
{
$job = new SendEmailJob();
$job->onConnection('redis');
$res = $job->dispatch();
echo "Job dispatched on redis connection";
}
}
?>
Результат выполнения кода:
"Job dispatched on redis connection"
Пример
Давайте используем цепочку вызовов для указания подключения и очереди одновременно:
<?php
namespace AppHttpControllers;
use AppJobsProcessImageJob;
class ImageController extends Controller
{
public function process()
{
$job = new ProcessImageJob();
$res = $job->dispatch()->onConnection('database')->onQueue('images');
echo "Job dispatched with connection and queue";
}
}
?>
Результат выполнения кода:
"Job dispatched with connection and queue"
Пример
Давайте проверим, что метод возвращает экземпляр PendingDispatch для дальнейшей цепочки:
<?php
namespace AppHttpControllers;
use AppJobsGenerateReportJob;
class ReportController extends Controller
{
public function generate()
{
$job = new GenerateReportJob();
$pendingDispatch = $job->dispatch()->onConnection('sqs');
if ($pendingDispatch instanceof IlluminateBusPendingDispatch) {
echo "PendingDispatch instance returned";
}
$pendingDispatch->onQueue('reports');
echo "Report job configured";
}
}
?>
Результат выполнения кода:
"PendingDispatch instance returned"
"Report job configured"