Laravel Pull Queue

时间:2014-12-25 04:44:41

标签: php laravel-4 ironmq

我一直在使用Laravel框架,最近刚刚开始实施队列,而Laravel内置了对IronMQ的支持。

从Laravel documentation可以很容易地看到如何将消息推送到队列,然后在Iron.io设置订阅者并将队列推送给这些订阅者。但是我想将IronMQ用作Pull队列。我没有看到任何使用Laravel的内置方法从指定队列中提取消息的迹象。

在IronMQ网站上,他们列出了与促进拉队列实施相关的所有端点。

例如:/projects/{Project ID}/queues/{Queue Name}/messages

在Laravel的IronMQ包中,我看到了似乎适用于这些端点的方法:

/**
 * 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使用Daemon Workers的文档,但是我想通过cron作业自己处理队列。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用IronMQ类而不是laravel Queue类:

$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