Comments (4)
Т.к. у расширения свой listener, сделал пока по простому:
use trntv\bus\interfaces\SelfHandlingCommand;
use yii\base\Object;
use \zhuravljov\yii\queue\Job;
class NotificationCommand extends Object implements Job, SelfHandlingCommand
{
public function handle($command)
{
\Yii::$app->queue->push(new $this);
}
public function run()
{
//тут выполняю нужные действия
}
}
Но хотелось бы сделать по-грамотному..
Наставьте, пожалуйста, на путь истинный :)
from yii2-command-bus.
Решил использовать другое расширение, т.к. samdark говорит тут, что стандартное расширение пока не допилено..
from yii2-command-bus.
Примитивное соединение trntv/yii2-command-bus и zhuravljov/yii2-queue
Добавляем маленькую прослойку:
'middlewares' => [
[
'class' => '\common\commands\middlewares\QueuedCommandMiddleware',
],
]
Содержание:
use trntv\bus\interfaces\Middleware;
use yii\base\Object;
use zhuravljov\yii\queue\Job;
/*
* Это класс - прослойка для командной шины, чтобы отправлять задания
* в очередь zhuravljov\yii2-queue
*/
class QueuedCommandMiddleware extends Object implements Middleware
{
/**
* @param $command
* @param callable $next
* @return string
*/
public function execute($command, callable $next)
{
if ($command instanceof Job) {
return \Yii::$app->queue->push($command);
}
return $next($command);
}
}
Пример команды:
use yii\base\Object;
use trntv\bus\interfaces\SelfHandlingCommand;
use zhuravljov\yii\queue\Job;
class NotificationCommand extends Object implements SelfHandlingCommand, Job
{
public $importantData;
public function handle($command)
{
//тут делаем, что хотим
}
public function run()
{
$this->handle(null);
}
}
Вызов стандартный:
Yii::$app->commandBus->handle(new NotificationCommand(
['importantData' => []]
));
Если хотим, чтоб команда не уходила в queue - убираем implements Job.
from yii2-command-bus.
Closed via dfbb7a5
from yii2-command-bus.
Related Issues (20)
- Потеря данных в фоновых процессах. HOT 17
- Problem with LoggingMiddleware in combination with QueuedCommandMiddleware HOT 2
- Still issues with logging and loop on exceptions
- Background commands not work for this case HOT 3
- details description of background process
- Issue with PHP_BINARY HOT 5
- waiting for multiple Background Commands running in parallel
- php7.2 support HOT 1
- Object can not be specific class name HOT 8
- BackgroundCommandMiddleware proc_open Error
- PHP 7.2 Cannot use yii\base\Object as Object because 'Object' is a special class name
- Error: Argument 1 passed to trntv\bus\locators\ClassNameLocator::addHandler() must be an instance of trntv\bus\interfaces\Handler, string given
- extract queue and background functionality to middlewares
- More tests
- Question regarding Logging HOT 3
- don't sleep if there are jobs in queue in QueueBusController.php HOT 1
- can you give a selfhandled redis queue command example? HOT 4
- DelayedCommand feature request HOT 2
- LoggingMiddleware
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yii2-command-bus.