3

IronMQを使用して私のプロジェクトで Laravel 5.1 にキューとジョブを実装すると、次の画像に示すようにジョブを IronMQ キューに送信できるようになりました。

ここに画像の説明を入力

私が今欲しいのは、ジョブのハンドル関数でキュー内の現在のメッセージ数 (赤いボックスの数) を取得することです。次のジョブ コードを見つけます。

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

質問: Laravel を使用して、IronMQ キューでキューに入れられたジョブ (メッセージ) の数を取得する方法は?

4

1 に答える 1

1

method/function何日も検索した結果、Laravel 5.1にはIronMQでキューに入れられたジョブの数を教えてくれる答えが見つかりませんでした。

しかし、IronMQ On-Premise API Referenceは解決策を提供してくれます。これは、javascriptを使用してさまざまな要求をクエリし、必要なものすべてをキューから/に設定/取得できるようにするREST/HTTP APIです (Get Queue、Update Queue、List Queues . ..) およびすべてのキュー内のメッセージから/へのメッセージ (ID によるメッセージの取得、すべてのメッセージの取得、メッセージのクリアなど)。

ベース URL :

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

たとえば、キュ​​ー内のメッセージの数が必要な場合は、キュー情報を取得sizeて結果を確認するだけです。

GET /queues/{Queue Name}

実用的な例:

プロジェクトの関係するキュー内の最初のベース リンクは、Webhook URLケースの下にあります (以下の図を参照)。

ここに画像の説明を入力

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
    }
  }
}
于 2015-08-11T10:00:44.907 に答える