mnv*_*mnv 3 php laravel laravel-5.2
我有两个不同的项目。Laravel 项目 A 和 Laravel 项目 B。我需要通过队列从项目 A 到项目 B 创建任务。我不想在项目 A 中为此创建工作。
目前我的认识是:
项目A
有状态但没有业务逻辑的工作:
<?php
namespace App\Jobs;
use ...;
/**
* Fake class!!!
*/
class MyJob extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
public $queue = 'MyQueue';
/**
* Some state
*/
protected $_contentId;
public function __construct($contentId)
{
$this->_contentId = $contentId;
}
/**
* Excess. I dont need business logic in project A.
*/
public function handle()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我在项目 A 中将作业推入队列:
...
$this->dispatch(
new MyJob($this->_contentId)
);
...
Run Code Online (Sandbox Code Playgroud)
项目B
<?php
namespace App\Jobs;
use ...;
/**
* Really needed class
*/
class MyJob extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
public $queue = 'MyQueue';
/**
* Some state
*/
protected $_contentId;
public function __construct($contentId)
{
$this->_contentId = $contentId;
}
/**
* Here is my business logic. In Project B!
*/
public function handle()
{
Artisan::call('my_command', [
'id' => $this->_contentId,
]);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,MyJob在Project A中没有怎么办?
如果您将两个 laravel 应用程序连接到同一个队列服务器。您可以将作业放在其他站点队列中。例如,如果你在 Laravel A
$job = (new Job())->onQueue('theQueueForLaravelB')
dispatch($job);
Run Code Online (Sandbox Code Playgroud)
但是要完成这个,你应该做一个基本的工作,用参数数据发送一个新的。喜欢:
class DispatchNewJob implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
private $class_to_create;
private $data;
public function __construct($class_to_create, $data)
{
$this->class_to_create = $class_to_create;
$this->data = $data;
}
public function handle()
{
dispatch(new $this->class_to_create($this->data));
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您现在可以将任何作业从 laravel A 发送到带有任何数据的 laravel B。
你可以打电话
$job = (new DispatchNewJob('App\Jobs\JobInLaravelB', ['data'=>'myawesomedata'])
->onQueue('LaravelBQueue');
dispatch($job);
Run Code Online (Sandbox Code Playgroud)
对不起我的英语,我来自阿根廷。
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |