Giter Club home page Giter Club logo

Comments (3)

trntv avatar trntv commented on September 24, 2024
  1. Database entry is the best solution for this case. I usually use redis for such purposes, but it can be mysql or any other db.
  2. Yes, this is normal behavior for php script, but you can try to use pm2 with watch mode enabled

from yii2-command-bus.

Bhoft avatar Bhoft commented on September 24, 2024

regarding 1. and how can i access the result or attributes of the job?

I tried to access the job object in e.g. QueueBusController::onSuccess but the attributes of the unserialized Job object are always the default ones e.g. null and don't have the values which are set when the job is executed.

The $result in QueueBusController::onSuccess is of course the return value of my command and could be stored in the database.
But attributes which are changed during the execution of the command are still not changed.
For me it looks like that the CommandBus or QueuedCommandMiddleware don't use the job object by reference so that the attributes aren't changed.

Can you give an example on how do you log the process changes on different events.
What I tried is the following

'queue-bus' => [
       'class' => 'trntv\bus\console\QueueBusController',
       'on '. trntv\bus\console\QueueBusController::EVENT_BEFORE_HANDLE => ['handlerClass', 'handleBeforeHandle'],
       'on '. trntv\bus\console\QueueBusController::EVENT_AFTER_HANDLE => ['handlerClass', 'handleAfterHandle'],
    ],

with a function like below

class handlerClass{
....
public static function handleAfterHandle(QueueBusEvent $event)
{
    $id = ArrayHelper::getValue($event, 'job.id');
    Console::output("event after Handle ID#{$id}");

    $job = ArrayHelper::getValue($event, 'job');

    if (array_key_exists('serializer', $job['body'])) {
        $unserialize = $job['body']['serializer'][1];
        $command = call_user_func($unserialize, $job['body']['object']);
        var_dump($command);
        var_dump($command->failure);  // null and not the changed value
        var_dump($command->success); // null and not the changed value
    }
}
....
}

and failure, success are attributes in my Command which I change on execution.
And as i have written if i add similar code to QueueBusController::onSuccess the attributes are also null and aren't the changed values.

from yii2-command-bus.

trntv avatar trntv commented on September 24, 2024

There is no command object in onSuccess or onError handlers there is job array. Job is something coming from queue.
If you want to log something from command you should log it inside command execution or you can use middlewares. They have access directly to Command object.

I think i should create something like LoggingMiddleware for example.

from yii2-command-bus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.