2016-09-16 52 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(); 
    } 
}