Laravel Pull Queue

Я использовал фреймворк Laravel и совсем недавно приступил к реализации очередей с помощью встроенной в Laravel поддержки IronMQ.

Из документации Laravel достаточно просто увидеть, как отправлять сообщения в очередь, а затем в 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, которая просто не документирована?

Спасибо!

Редактировать:

Я видел документацию по использованию Daemon Workers через Laravel, однако я хочу обработать очередь самостоятельно с помощью задания cron.

1 ответ

Решение

Вы можете попробовать использовать класс 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);

IronMQ PHP lib

Другие вопросы по тегам