В Lumen / Laravel я хочу отправить сообщение в заданную очередь.
по умолчанию я настроил его на Redis, я бы хотел отправить его на другой сервер очередей, поскольку другое приложение позаботится об этом.
Я знаю, что могу делать $queue->pushRaw('payload');
Однако для меня нет другого способа выбрать соединение.
Я знаю, что я могу использовать Facade для создания моей очереди как таковой:
$connection = Queue::connection('connection_name'); $connection->pushOn('queue_name', $job)
Однако я делаю это в Lumen, и хотел бы не включать Фасад только для этого аспекта. Кроме того, я хотел бы знать, как это сделать, поскольку я хотел бы пройти через IoC через обработчик события задания.
Версия Lumen / Laravel 5.2.
Как упоминал @ Mois44, вы должны выполнить это с помощью QueueManager.
QueueManager позволит вам вызвать метод connection (), который вернет объект Queue. И отсюда вы можете вызвать обычные функции в очереди (pushOn, laterOn и т. Д.),
// Returns an Illuminate\Queue\QueueManager object $queueManager = app('queue'); // Returns an Illuminate\Queue\Queue object $queue = $queueManager->connection('my-connection'); $queue->pushOn('queue_name', $job);
или все вместе
app('queue')->connection('my-connection')->pushOn('queue_name', $job)
По общему признанию, мои специфические знания Люмена довольно ограничены. Если метод app () не работает, чтобы получить экземпляр QueueManager, то я не уверен, что делать.