2016-09-16 7 views
0

Я пытаюсь запустить задания из других кодовойLaravel толчок очередь заданий из различных кодовой

МояКоманда Класса:

<?php 

namespace App\Console\Commands; 

use Illuminate\Console\Command; 
use Illuminate\Foundation\Bus\DispatchesJobs; 
use App\Jobs\MyJob; 


class EncodeTvVideos extends Command 
{ 
    use DispatchesJobs; 

    protected $signature = 'command:my'; 

    protected $description = ''; 

    public function handle() 
    { 
     $job = (new MyJob($this->argument())) 
      ->onConnection('beanstalkd') 
      ->onQueue('cron-default')); 

     $this->dispatch($job); 
    } 
} 

И MyJob Класс:

<?php namespace App\Jobs; 

use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class MyJob extends Job implements ShouldQueue 
{ 
    use InteractsWithQueue, SerializesModels; 

    private $payload; 

    public function __construct($payload = null) 
    { 
     $this->payload = $payload; 
    } 

    public function handle() 
    { 
     echo "Job processed here"; 
     $this->job->delete(); 
    } 
} 

Я слушаю мой очередь с использованием очереди: команда прослушивания, такая как

php artisan queue:listen --queue=cron-default 

Если я запустил команду (внутри некоторой кодовой базы): my, я получаю такую ​​полезную нагрузку, как успешно обработанную.

{ 
    "job":"Illuminate\\\\Queue\\\\[email protected]", 
    "data":{ 
     "command":"O:29:\\"Acme\\Jobs\\FooJob\\":4:{s:11:\\"fooBar\\";s:7:\\"abc-123\\";s:5:\\"queue\\";N;s:5:\\"delay\\";N;s:6:\\"\\u0000*\\u0000job\\";N;}" 
    } 
} 

Теперь моя проблема в том, что мне нужно запускать это задание или команду с другой кодовой базы, есть ли способ?

У меня нет имени домена для проекта (команды/работники), иначе я мог бы попытаться создать один маршрут, он вызовет команду.

ответ

1

При помощи этого ref

С помощью этих пакетов "озарить/очереди": "5,2 .", "Кпк/pheanstalk": "~ 3,0", "озарить/шифрования":. «5.2 "

Я могу нажать простую полезную нагрузку к данной трубе, как этот

use Illuminate\Queue\Capsule\Manager as Queue; 

$queue = new Queue; 


// Some drivers need it 
$queue->getContainer()->bind('encrypter', function() { 
    return new Illuminate\Encryption\Encrypter('foobar'); 
}); 

$queue->addConnection([ 
    'driver' => 'beanstalkd', 
    'host' => 'localhost', 
    'queue' => 'default', 
], 'default'); 

$queue->push('App\Jobs\[email protected]', ['data'=> 'something']); 

// Первый параметр полного пути JobClass в другой кодовой базы // Второй параметр любой параметр в Жо б.

Незначительное изменение в моей работе, чтобы обрабатывать обе команды, и простая полезная нагрузка

<?php namespace App\Jobs; 

use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class MyJob extends Job implements ShouldQueue 
{ 
    use InteractsWithQueue, SerializesModels; 

    private $payload; 

    public function __construct($payload = null) 
    { 
     $this->payload = $payload; 
    } 


    public function handle() 
    { 
     echo "Job processed here"; 
     $this->job->delete(); 
    } 

    public function process($job, $payload) 
    { 
     echo "Job processed from plain payload"; 
     $job->delete(); 
    } 
}