Как получить количество заданий в очереди в IronMQ, используя Laravel 5.1?
Внедряя очереди и задания в Laravel 5.1 в моем проекте с использованием IronMQ, теперь я могу отправлять задания в очередь IronMQ, как показано на рисунке ниже:
Теперь я хочу получить текущее количество сообщений в очереди (число в красном поле) в функции handle моей работы, найти код работы ниже:
class GetWords extends Job implements SelfHandling, ShouldQueue{
use InteractsWithQueue, SerializesModels;
/**
* Create a new job instance.
*/
public function __construct(Url $url)
{
}
/**
* Execute the job.
*/
public function handle()
{
//getting the name of queue
dd($this->job->getName()); //return 'words'
$currentNumberMsgsInQueue = ?????; //i can't find how
//Condition
if($currentNumberMsgsInQueue == 10){
//Do something
}
}
}
Вопрос: Как получить количество заданий в очереди (сообщений) в очереди IronMQ, используя Laravel?
1 ответ
После нескольких дней поиска я нашел ответ, нет method/function
в Laravel 5.1 это может дать нам количество заданий в очереди в IronMQ.
Но в отличие от IronMQ On-Premise API Reference, мы предлагаем решение, это REST/HTTP API, который позволяет нам запрашивать различные запросы, используя javascript для установки / получения всего, что мы хотим из / в очередь (Get Queue, Update Queue, List Queues ...) и из / в сообщения в каждой очереди (Получить сообщение по идентификатору, Получить все сообщения, Очистить сообщения...).
https: // {Host} / {Версия API}/projects/{Project_ID}/queues/{Queue_Name}/messages/webhook?oauth={Token}
Например, если мы хотим получить количество сообщений в очереди, нам нужно просто получить информацию об очереди и посмотреть size
из результата.
GET /queues/{Queue Name}
Практический пример:
Вы можете найти свою первую базовую ссылку в соответствующей очереди в вашем проекте в разделе URL-адреса Webhook (см. Рисунок ниже):
JS код:
//To get queue info we have url : GET /queues/{Queue Name}
var url = "https://{Host}/{API Version}/projects/{Project_ID}/queues/{Queue_Name}?oauth={Token}";
//Using ajax $.get
$.get( url ,
function( result ) {
alert( "Queue size is :" + result["queue"]["size"]);
});
Результат:
{
"queue": {
"project_id": 123,
"name": "my_queue",
"size": 0,
"total_messages": 0,
"message_timeout": 60,
"message_expiration": 604800,
"type": "pull/unicast/multicast",
"push": {
"subscribers": [
{
"name": "subscriber_name",
"url": "http://mysterious-brook-1807.herokuapp.com/ironmq_push_1",
"headers": {
"Content-Type": "application/json"
}
}
],
"retries": 3,
"retries_delay": 60,
"error_queue": "error_queue_name",
"rate_limit": 10
}
}
}