2014-11-01 5 views
0

Я планировал использовать RabbitMQ для проекта, в котором мне требуется знать положение моей задачи через каждые несколько секунд в очереди.Знать положение задачи в RabbitMQ

Скажем, я использую его для генерации отчетов, и если есть очередь, то я хочу показать пользователю свою позицию в очереди до того, как задача начнется.

Это что-то, что я могу достичь через RabbitMQ ??

ответ

1

Невозможно получить позицию сообщения в очереди в RabbitMQ. Фактически, это совсем не связано с протоколом AMQP.

В качестве обходного пути для достижения того, что вы хотите, вы можете добавить идентификатор сообщения в какое-либо хранилище на публикацию, скажем, базу данных MySQL, а затем удалить ее оттуда при ее использовании. Затем вы можете запросить данные для получения требуемых показателей.

0

Вы можете отправить сообщение в кодировке json с уникальным идентификатором, список доступа к необработанной информации о очереди через RabbitMQ api, декодировать сообщение и делать ваши магические вещи, например, подсчитывать конкретную позицию задачи.

Ниже приведен пример получения списка очереди с помощью PHP локон

 // create php curl 
     $ch = curl_init(); 

     $queue_titile = "hallo"; 

     $url = "http://localhost::15672/#/api/queues/%2F/$queue_titile/get";          

     // define post data 
     $post_data = '{"vhost":"/","name":"'.$queue_titile.'","truncate":"'.$limit.'","requeue":"true","encoding":"auto","count":"'.$limit.'"}'; 

     // set curl configuration 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_USERPWD, 'guest:guest'); 
     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

     // send curl request            
     $response = curl_exec($ch); 

     // close curl connection 
     curl_close($ch);          

     // decode json response 
     $response = json_decode($response); 

 Смежные вопросы

  • Нет связанных вопросов^_^