Process job on laravel events
Create package.json
npm init
Install laravel-queue
npm install --save laravel-queue
After init the application
./artisan init
It ask for laravel project path then ask for command path (relative to laravel project path) then when asked add this to Console/kernel.php
if your commands folder is not standard(e.g app/Console/Commands), dont forget to change namespace of the class
\App\Console\Commands\NodeConfig::class
Import laravel config
./artisan laravel:config
It ask which config to import and show you setting to put to config in Config/laravel.js to automatically import with the same setting
If you need to interact with database (only tested with mysql) you can import model from database add model to import in Config/core.js and run
./artisan make:models
<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Queue\SerializesModels;
class EventExample extends Event implements ShouldBroadcastNow
{
use SerializesModels;
//public variable send with event
public $data;
public $otherData;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($dataToSend)
{
$this->data = $dataToSend;
$this->otherData = 'otherData';
}
/**
* Get the broadcast event name.
* event name in javascript object notation
* @return string
*
*/
public function broadcastAs()
{
return 'app.example';
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return [config('broadcasting.channel', 'laravel-channel')];
}
}
In Config/app.js add this in job
app: {
example: "exampleJob"
}
then run this for create job
./artisan make:job
look at Jobs folder to test job, data is stored in job.data.
Complete documentation will come soon...
php artisan queue:listen use pooling and use cpu to check if job need to run
node is event-driven and do job when arrive so it use less cpu
- write test
- write doc
- import from other databases (postgresql,sqlite,...)
- shell for artisan cli
- sequelize-db-export-import for creating sequelize model from mysql database (only javascript, coffee removed)