我一直在使用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作业自己处理队列。
答案 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);