2016-05-20 10 views
5

In Lumen/Laravel voglio inviare un messaggio a una determinata coda.In Laravel come creare un oggetto coda e impostarne la connessione senza facciata

per impostazione predefinita, l'ho impostato su Redis, quello che vorrei è inviarlo a un altro queue server come un'altra applicazione si prenderà cura di esso.

So che posso fare $queue->pushRaw('payload'); Tuttavia, non c'è modo per me di scegliere la connessione.

Sono consapevole che posso usare per creare Facciata mia coda in quanto tale:

$connection = Queue::connection('connection_name'); 
$connection->pushOn('queue_name', $job) 

Comunque io sto facendo questo in Lumen, e vorrei evitare di accendere il Facade Proprio per questo aspetto. Inoltre, mi piacerebbe sapere come fare come vorrei passare da IoC attraverso un gestore di eventi di lavoro alla fine.

Versione di Lumen/Laravel 5.2.

+2

Se non si desidera utilizzare le facciate, utilizzare il contenitore di dipendenza delle dipendenze per ottenere un'istanza di Illuminate \ Queue \ QueueManager o utilizzare l'app (...) o la funzione $ app-> make (..), per esempio app ("coda") -> Connessione ('connection_name'); o $ app-> make ("queue") -> connection (...) - Spero che questo aiuti - vorrei creare un esempio completo, ma devo andare a letto ora. Inoltre, un po 'più di informazioni sul codice (da dove si invia il messaggio, ecc.) Sarebbe utile se avete bisogno di una risposta completa. –

risposta

2

Come alluso da @ Mois44, dovresti riuscire a farlo con QueueManager.

QueueManager consente di chiamare il metodo connection(), che restituirà un oggetto Queue. E da qui, è possibile chiamare i normali funzioni in coda (pushOn, lateron, ecc)

// 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); 

o tutti concatenati

app('queue')->connection('my-connection')->pushOn('queue_name', $job) 

Certo, la mia conoscenza specifica Lumen è piuttosto limitata. Se il metodo app() non funziona per ottenere un'istanza di QueueMananger, non sono sicuro di cosa fare.

+0

So che non va bene, ma GRAZIE si salva il mio problema per alcuni plugin outher che ho problemi. app ('coda') invece app (classe QueueManager ::). – xDan

Problemi correlati