dongxianghuan3587
2015-07-14 15:26
浏览 85
已采纳

如何使用Laravel 5.1获取IronMQ中的排队作业数?

Implementing queues & jobs in Laravel 5.1 in my project using IronMQ, I can now send jobs to the IronMQ queue like you see in image bellow :

enter image description here

What I want now is to get the current number of messages in queue (number in red box) in the handle function in my job, find job code bellow :

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
        }
    }
}

Question is : How to get number of queued jobs (messages) in IronMQ queue using Laravel ?

图片转代码服务由CSDN问答提供 功能建议

实施队列& 使用 IronMQ 在我的项目中使用Laravel 5.1中的作业,我现在可以将作业发送到IronMQ队列 你在下面的图片中看到:

我现在想要的是在我的工作中的句柄功能中获取当前队列中的消息数(红色框中的数字),找到下面的作业代码: < pre> 类GetWords extends Job实现SelfHandling,ShouldQueue { use InteractsWithQueue,SerializesModels; / ** *创建一个新的作业实例。 * / 公共函数__construct(Url $ url) { } / ** *执行作业。 * / 公共函数句柄() { //获取队列名称 dd($ 这 - &GT;求职&GT;的getName()); //返回'words' $ currentNumberMsgsInQueue = ?????; //我找不到如何 条件 如果($ currentNumberMsgsInQueue == 10){ //做某事 } } }

问题是:如何使用Laravel获取IronMQ队列中的排队作业数(消息)?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doujie1917 2015-08-11 10:00
    已采纳

    After days of searching I found the answer, there's no method/function in Laravel 5.1 that can give us the number of queued jobs in IronMQ.

    But against IronMQ On-Premise API Reference give us a solution, it's a REST/HTTP API that allow us to query different requests using javascript to set/get all what we want from/to queue (Get Queue, Update Queue, List Queues ...) and from/to messages in every queue (Get Message by Id, Get all Messages, Clear Messages ...).

    Base URL :

    https://{Host}/{API Version}/projects/{Project_ID}/queues/{Queue_Name}/messages/webhook?oauth={Token}

    Example, if we want the number of messages in queue, we have just to Get Queue Info and peek the size from result.

    GET /queues/{Queue Name}
    

    A Practical Example :

    You can find your first base link inside the concerned queue in your project under Webhook URL case (see picture bellow) :

    enter image description here

    JS code :

    //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"]);
    });
    

    Result :

    {
      "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
        }
      }
    }
    
    打赏 评论

相关推荐 更多相似问题