2016-09-16 89 views
0

我試圖從其他的代碼庫引發喬布斯laravel推排隊的作業從不同的代碼庫

mycommand的類別:

<?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 

如果我運行命令(在一些代碼庫內)命令:我的負載像這樣任何處理成功。

{ 
    "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 。」, 「PDA/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(); 
    } 
}