All Projects → artis-auxilium → laravel-node-queue

artis-auxilium / laravel-node-queue

Licence: MIT license
Process job on laravel events

Programming Languages

javascript
184084 projects - #8 most used programming language
PHP
23972 projects - #3 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to laravel-node-queue

football-events
Event-Driven microservices with Kafka Streams
Stars: ✭ 57 (+200%)
Mutual labels:  event-driven-microservices
theodolite
Theodolite is a framework for benchmarking the horizontal and vertical scalability of cloud-native applications.
Stars: ✭ 20 (+5.26%)
Mutual labels:  event-driven-microservices
Cart
No description or website provided.
Stars: ✭ 22 (+15.79%)
Mutual labels:  event-driven-microservices
laravel-queue-cmq
📦 Tencent Cloud Message Queue driver for Laravel Queue
Stars: ✭ 25 (+31.58%)
Mutual labels:  laravel-queues

Codacy Badge Codacy Badge

node server for Laravel queue

NPM

Process job on laravel events

Getting started

Install and init module

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

Example laravel event

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

why use it

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

to-do

  • write test
  • write doc
  • import from other databases (postgresql,sqlite,...)

Stuff used to make this

Package

package forked and included

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].