Я использую фреймворк Laravel и совсем недавно приступил к реализации очередей со встроенной поддержкой Laravel для IronMQ.
От Ларавела документация достаточно просто увидеть, как отправить сообщения в очередь, а затем включить Iron.io установить подписчиков и выдвинуть очередь для этих подписчиков. Однако я хочу использовать IronMQ в качестве очереди Pull. Я не вижу никаких признаков того, как вытащить сообщение из указанной очереди, используя встроенные методы Laravel.
На сайте IronMQ перечислены все конечные точки, связанные с реализацией очереди Pull.
Пример: /projects/{Project ID}/queues/{Queue Name}/messages
В пакете IronMQ для Laravel я вижу методы, которые работают с этими конечными точками:
/**
* Peek Messages on a Queue
* Peeking at a queue returns the next messages on the queue, but it does not reserve them.
*
* @param string $queue_name
* @return object|null message or null if queue is empty
*/
public function peekMessage($queue_name) {
$messages = $this->peekMessages($queue_name, 1);
if ($messages == null) {
return null;
} else {
return $messages[0];
}
}
Однако я не вижу никакой поддержки этому через Laravel. Я ожидаю, что смогу сделать что-то вроде:
$message = Queue::peek();
Который вернет следующее сообщение из указанной очереди и т. Д.
Есть ли способ сделать это с помощью встроенной поддержки Laravel, которая просто не документирована?
Спасибо!
Редактировать:
Я видел документацию по использованию Рабочие демонов через Laravel, однако я хочу обработать очередь самостоятельно через задание cron.
Вы можете попробовать использовать класс IronMQ вместо класса очереди laravel:
$ironmq = new \IronMQ(array(
'token' => Config::get('queue.connections.iron.token', 'xxx'),
'project_id' => Config::get('queue.connections.iron.project', 'xxx')
));
$ironmq->getMessage($queue_name);
Других решений пока нет …