public function pushAction($queue_id, $action, $args, $exception_handle, $desc, $immediately = false)
{
if (!isset($this->action_queues[$queue_id])) {
Logger::warning("unknown message queue {$queue_id}");
return;
}
$count = count($this->action_queues[$queue_id]);
if ($count && $this->action_queues[$queue_id][0] === null) {
Logger::warning("[MQ {$queue_id}] try to add action to closed queue");
return;
}
$action = array($action, $args, $exception_handle, $desc);
if ($immediately) {
Logger::debug("[MQ {$queue_id}] new action [{$desc}'] immediately");
$this->callAction($queue_id, $action);
} else {
Logger::debug("[MQ {$queue_id}] new action [{$desc}']");
$this->action_queues[$queue_id][] = $action;
$this->next_action[] = $queue_id;
}
}