Skip to content

Files

Latest commit

639bab7 · Mar 10, 2018

History

History
63 lines (42 loc) · 1.33 KB

async_commands.md

File metadata and controls

63 lines (42 loc) · 1.33 KB

Async commands

Installation

$ composer require enqueue/async-command:^0.8

Configuration

# config/packages/enqueue_async_commands.yaml

enqueue:
   async_commands: true

Usage

<?php

use Enqueue\Client\ProducerInterface;
use Enqueue\AsyncCommand\Commands;
use Enqueue\AsyncCommand\RunCommand;
use Symfony\Component\DependencyInjection\ContainerInterface;

/** @var $container ContainerInterface */

/** @var ProducerInterface $producer */
$producer = $container->get(ProducerInterface::class);

$producer->sendCommand(Commands::RUN_COMMAND, new RunCommand('debug:container'));

optionally you can get a command execution result:

<?php

use Enqueue\Client\ProducerInterface;
use Enqueue\AsyncCommand\RunCommandResult;
use Enqueue\AsyncCommand\Commands;
use Enqueue\AsyncCommand\RunCommand;
use Symfony\Component\DependencyInjection\ContainerInterface;

/** @var $container ContainerInterface */

/** @var ProducerInterface $producer */
$producer = $container->get(ProducerInterface::class);

$promise = $producer->sendCommand(Commands::RUN_COMMAND, new RunCommand('debug:container'), true);

// do other stuff.

if ($replyMessage = $promise->receive(5000)) { 
    $result = RunCommandResult::jsonUnserialize($replyMessage->getBody());
    
    echo $result->getOutput();
}

back to index