mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 07:23:13 +00:00
add tab queue monitor, limit job list to 500
This commit is contained in:
@@ -20,6 +20,8 @@ class WorkerRunningJob
|
||||
const FINISHED = 'finished';
|
||||
const RUNNING = 'running';
|
||||
|
||||
const MAX_RESULT = 500;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
* @ORM\Id
|
||||
|
@@ -79,11 +79,11 @@ class AdminConfigurationController extends Controller
|
||||
$reload = ($request->query->get('reload')) == 1 ? true : false ;
|
||||
|
||||
if ($request->query->get('running') == 1 && $request->query->get('finished') == 1) {
|
||||
$workerRunningJob = $repoWorker->findAll();
|
||||
$workerRunningJob = $repoWorker->findBy([], ['id' => 'DESC'], WorkerRunningJob::MAX_RESULT);
|
||||
} elseif ($request->query->get('running') == 1) {
|
||||
$workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::RUNNING]);
|
||||
$workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::RUNNING], ['id' => 'DESC'], WorkerRunningJob::MAX_RESULT);
|
||||
} elseif ($request->query->get('finished') == 1) {
|
||||
$workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::FINISHED]);
|
||||
$workerRunningJob = $repoWorker->findBy(['status' => WorkerRunningJob::FINISHED], ['id' => 'DESC'], WorkerRunningJob::MAX_RESULT);
|
||||
}
|
||||
|
||||
return $this->render('admin/worker-manager/worker_info.html.twig', [
|
||||
@@ -92,6 +92,22 @@ class AdminConfigurationController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function queueMonitorAction(PhraseaApplication $app, Request $request)
|
||||
{
|
||||
$reload = ($request->query->get('reload')) == 1 ? true : false ;
|
||||
|
||||
/** @var AMQPConnection $serverConnection */
|
||||
$serverConnection = $app['alchemy_worker.amqp.connection'];
|
||||
$serverConnection->getChannel();
|
||||
$serverConnection->declareExchange();
|
||||
$queuesStatus = $serverConnection->getQueuesStatus();
|
||||
|
||||
return $this->render('admin/worker-manager/worker_queue_monitor.html.twig', [
|
||||
'queuesStatus' => $queuesStatus,
|
||||
'reload' => $reload
|
||||
]);
|
||||
}
|
||||
|
||||
public function truncateTableAction(PhraseaApplication $app, Request $request)
|
||||
{
|
||||
/** @var WorkerRunningJobRepository $repoWorker */
|
||||
|
@@ -84,6 +84,10 @@ class ControllerServiceProvider implements ControllerProviderInterface, ServiceP
|
||||
->method('GET|POST')
|
||||
->bind('worker_admin_pullAssets');
|
||||
|
||||
$controllers->match('/queue-monitor', 'controller.worker.admin.configuration:queueMonitorAction')
|
||||
->method('GET')
|
||||
->bind('worker_admin_queue_monitor');
|
||||
|
||||
return $controllers;
|
||||
}
|
||||
|
||||
|
@@ -213,6 +213,37 @@ class AMQPConnection
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get queueName, messageCount, consumerCount of queues
|
||||
* @return array
|
||||
*/
|
||||
public function getQueuesStatus()
|
||||
{
|
||||
$queuesList = array_merge(
|
||||
array_values(self::$defaultQueues),
|
||||
array_values(self::$defaultDelayedQueues),
|
||||
array_values(self::$defaultRetryQueues),
|
||||
array_values(self::$defaultFailedQueues)
|
||||
);
|
||||
|
||||
$this->getChannel();
|
||||
$queuesStatus = [];
|
||||
|
||||
foreach ($queuesList as $queue) {
|
||||
$this->setQueue($queue);
|
||||
list($queueName, $messageCount, $consumerCount) = $this->channel->queue_declare($queue, true);
|
||||
|
||||
$status['queueName'] = $queueName;
|
||||
$status['messageCount'] = $messageCount;
|
||||
$status['consumerCount'] = $consumerCount;
|
||||
|
||||
$queuesStatus[] = $status;
|
||||
unset($status);
|
||||
}
|
||||
|
||||
return $queuesStatus;
|
||||
}
|
||||
|
||||
public function connectionClose()
|
||||
{
|
||||
$this->channel->close();
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||
<file date="2020-06-05T14:10:58Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
||||
<file date="2020-06-10T16:17:40Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||
@@ -9,9 +9,9 @@
|
||||
<trans-unit id="96f0767cb7ea65a7f86c8c9432e80d16cf9d8680" resname="Please provide the same passwords." approved="yes">
|
||||
<source>Please provide the same passwords.</source>
|
||||
<target state="translated">Bitte geben Sie diesselbe Passwörter ein.</target>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
<jms:reference-file line="36">Form/Login/PhraseaRenewPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="44">Form/Login/PhraseaRecoverPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
</trans-unit>
|
||||
<trans-unit id="90b8c9717bb7ed061dbf20fe1986c8b8593d43d4" resname="The token provided is not valid anymore" approved="yes">
|
||||
<source>The token provided is not valid anymore</source>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||
<file date="2020-06-05T14:11:24Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
||||
<file date="2020-06-10T16:18:36Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||
@@ -9,9 +9,9 @@
|
||||
<trans-unit id="96f0767cb7ea65a7f86c8c9432e80d16cf9d8680" resname="Please provide the same passwords." approved="yes">
|
||||
<source>Please provide the same passwords.</source>
|
||||
<target state="translated">Please provide the same passwords.</target>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
<jms:reference-file line="36">Form/Login/PhraseaRenewPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="44">Form/Login/PhraseaRecoverPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
</trans-unit>
|
||||
<trans-unit id="90b8c9717bb7ed061dbf20fe1986c8b8593d43d4" resname="The token provided is not valid anymore" approved="yes">
|
||||
<source>The token provided is not valid anymore</source>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||
<file date="2020-06-05T14:11:52Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
||||
<file date="2020-06-10T16:19:33Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||
@@ -9,9 +9,9 @@
|
||||
<trans-unit id="96f0767cb7ea65a7f86c8c9432e80d16cf9d8680" resname="Please provide the same passwords." approved="yes">
|
||||
<source>Please provide the same passwords.</source>
|
||||
<target state="translated">Veuillez indiquer des mots de passe identiques.</target>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
<jms:reference-file line="36">Form/Login/PhraseaRenewPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="44">Form/Login/PhraseaRecoverPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
</trans-unit>
|
||||
<trans-unit id="90b8c9717bb7ed061dbf20fe1986c8b8593d43d4" resname="The token provided is not valid anymore" approved="yes">
|
||||
<source>The token provided is not valid anymore</source>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
|
||||
<file date="2020-06-05T14:12:23Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
||||
<file date="2020-06-10T16:20:36Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
|
||||
<header>
|
||||
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
|
||||
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
|
||||
@@ -9,9 +9,9 @@
|
||||
<trans-unit id="96f0767cb7ea65a7f86c8c9432e80d16cf9d8680" resname="Please provide the same passwords.">
|
||||
<source>Please provide the same passwords.</source>
|
||||
<target state="new">Please provide the same passwords.</target>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
<jms:reference-file line="36">Form/Login/PhraseaRenewPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="44">Form/Login/PhraseaRecoverPasswordForm.php</jms:reference-file>
|
||||
<jms:reference-file line="49">Form/Login/PhraseaRegisterForm.php</jms:reference-file>
|
||||
</trans-unit>
|
||||
<trans-unit id="90b8c9717bb7ed061dbf20fe1986c8b8593d43d4" resname="The token provided is not valid anymore">
|
||||
<source>The token provided is not valid anymore</source>
|
||||
|
@@ -0,0 +1,345 @@
|
||||
<?php
|
||||
|
||||
namespace Alchemy\Phrasea\Model\Proxies\__CG__\Alchemy\Phrasea\Model\Entities;
|
||||
|
||||
/**
|
||||
* DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE'S PROXY GENERATOR
|
||||
*/
|
||||
class WorkerRunningJob extends \Alchemy\Phrasea\Model\Entities\WorkerRunningJob implements \Doctrine\ORM\Proxy\Proxy
|
||||
{
|
||||
/**
|
||||
* @var \Closure the callback responsible for loading properties in the proxy object. This callback is called with
|
||||
* three parameters, being respectively the proxy object to be initialized, the method that triggered the
|
||||
* initialization process and an array of ordered parameters that were passed to that method.
|
||||
*
|
||||
* @see \Doctrine\Common\Persistence\Proxy::__setInitializer
|
||||
*/
|
||||
public $__initializer__;
|
||||
|
||||
/**
|
||||
* @var \Closure the callback responsible of loading properties that need to be copied in the cloned object
|
||||
*
|
||||
* @see \Doctrine\Common\Persistence\Proxy::__setCloner
|
||||
*/
|
||||
public $__cloner__;
|
||||
|
||||
/**
|
||||
* @var boolean flag indicating if this object was already initialized
|
||||
*
|
||||
* @see \Doctrine\Common\Persistence\Proxy::__isInitialized
|
||||
*/
|
||||
public $__isInitialized__ = false;
|
||||
|
||||
/**
|
||||
* @var array properties to be lazy loaded, with keys being the property
|
||||
* names and values being their default values
|
||||
*
|
||||
* @see \Doctrine\Common\Persistence\Proxy::__getLazyProperties
|
||||
*/
|
||||
public static $lazyPropertiesDefaults = [];
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param \Closure $initializer
|
||||
* @param \Closure $cloner
|
||||
*/
|
||||
public function __construct($initializer = null, $cloner = null)
|
||||
{
|
||||
|
||||
$this->__initializer__ = $initializer;
|
||||
$this->__cloner__ = $cloner;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function __sleep()
|
||||
{
|
||||
if ($this->__isInitialized__) {
|
||||
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'databoxId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'recordId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'work', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'workOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'published', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'status'];
|
||||
}
|
||||
|
||||
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'databoxId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'recordId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'work', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'workOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'published', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\WorkerRunningJob' . "\0" . 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __wakeup()
|
||||
{
|
||||
if ( ! $this->__isInitialized__) {
|
||||
$this->__initializer__ = function (WorkerRunningJob $proxy) {
|
||||
$proxy->__setInitializer(null);
|
||||
$proxy->__setCloner(null);
|
||||
|
||||
$existingProperties = get_object_vars($proxy);
|
||||
|
||||
foreach ($proxy->__getLazyProperties() as $property => $defaultValue) {
|
||||
if ( ! array_key_exists($property, $existingProperties)) {
|
||||
$proxy->$property = $defaultValue;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
$this->__cloner__ && $this->__cloner__->__invoke($this, '__clone', []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Forces initialization of the proxy
|
||||
*/
|
||||
public function __load()
|
||||
{
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, '__load', []);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal generated method: use only when explicitly handling proxy specific loading logic
|
||||
*/
|
||||
public function __isInitialized()
|
||||
{
|
||||
return $this->__isInitialized__;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal generated method: use only when explicitly handling proxy specific loading logic
|
||||
*/
|
||||
public function __setInitialized($initialized)
|
||||
{
|
||||
$this->__isInitialized__ = $initialized;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal generated method: use only when explicitly handling proxy specific loading logic
|
||||
*/
|
||||
public function __setInitializer(\Closure $initializer = null)
|
||||
{
|
||||
$this->__initializer__ = $initializer;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal generated method: use only when explicitly handling proxy specific loading logic
|
||||
*/
|
||||
public function __getInitializer()
|
||||
{
|
||||
return $this->__initializer__;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal generated method: use only when explicitly handling proxy specific loading logic
|
||||
*/
|
||||
public function __setCloner(\Closure $cloner = null)
|
||||
{
|
||||
$this->__cloner__ = $cloner;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal generated method: use only when explicitly handling proxy specific cloning logic
|
||||
*/
|
||||
public function __getCloner()
|
||||
{
|
||||
return $this->__cloner__;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal generated method: use only when explicitly handling proxy specific loading logic
|
||||
* @static
|
||||
*/
|
||||
public function __getLazyProperties()
|
||||
{
|
||||
return self::$lazyPropertiesDefaults;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
if ($this->__isInitialized__ === false) {
|
||||
return (int) parent::getId();
|
||||
}
|
||||
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', []);
|
||||
|
||||
return parent::getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function setDataboxId($databoxId)
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setDataboxId', [$databoxId]);
|
||||
|
||||
return parent::setDataboxId($databoxId);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getDataboxId()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getDataboxId', []);
|
||||
|
||||
return parent::getDataboxId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function setRecordId($recordId)
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setRecordId', [$recordId]);
|
||||
|
||||
return parent::setRecordId($recordId);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getRecordId()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getRecordId', []);
|
||||
|
||||
return parent::getRecordId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function setWork($work)
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setWork', [$work]);
|
||||
|
||||
return parent::setWork($work);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getWork()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getWork', []);
|
||||
|
||||
return parent::getWork();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function setWorkOn($workOn)
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setWorkOn', [$workOn]);
|
||||
|
||||
return parent::setWorkOn($workOn);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getWorkOn()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getWorkOn', []);
|
||||
|
||||
return parent::getWorkOn();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getCreated()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getCreated', []);
|
||||
|
||||
return parent::getCreated();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function setPublished(\DateTime $published)
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setPublished', [$published]);
|
||||
|
||||
return parent::setPublished($published);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getPublished()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getPublished', []);
|
||||
|
||||
return parent::getPublished();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function setStatus($status)
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setStatus', [$status]);
|
||||
|
||||
return parent::setStatus($status);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getStatus()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getStatus', []);
|
||||
|
||||
return parent::getStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getWorkName()
|
||||
{
|
||||
|
||||
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getWorkName', []);
|
||||
|
||||
return parent::getWorkName();
|
||||
}
|
||||
|
||||
}
|
@@ -35,6 +35,11 @@
|
||||
{{ 'admin::workermanager:tab:metadata: title' |trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="worker-queue-monitor" role="presentation">
|
||||
<a href="#worker-queue-monitor" aria-controls="worker-queue-monitor" role="tab" data-toggle="tab" data-url="/admin/worker-manager/queue-monitor">
|
||||
{{ 'admin::workermanager:tab:queueMonitor: title' |trans }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
@@ -48,6 +53,7 @@
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-pull-assets"></div>
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-subview"></div>
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-metadata"></div>
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-queue-monitor"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@@ -0,0 +1,42 @@
|
||||
{% if not reload %}
|
||||
<h1>{{ 'admin::workermanager:tab:queueMonitor: description' |trans }}</h1>
|
||||
|
||||
<button id="refresh-monitor" class="btn btn-success">
|
||||
{{ 'admin::workermanager:tab:queueMonitor: Refresh list' |trans }}
|
||||
</button>
|
||||
|
||||
<table class="admintable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>{{ 'admin::workermanager:tab:queueMonitor: Message count' |trans }}</th>
|
||||
<th>{{ 'admin::workermanager:tab:queueMonitor: Consumer count' |trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="queue-list">
|
||||
|
||||
{% endif %}
|
||||
{% for queueStatus in queuesStatus %}
|
||||
<tr>
|
||||
<th>{{ queueStatus.queueName }}</th>
|
||||
<td>{{ queueStatus.messageCount }}</td>
|
||||
<td>{{ queueStatus.consumerCount }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
{% if not reload %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script type="text/javascript">
|
||||
$("#refresh-monitor").on('click', function () {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/admin/worker-manager/queue-monitor?reload=1",
|
||||
success: function (data) {
|
||||
$(".queue-list").empty().html(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
Reference in New Issue
Block a user