【问题标题】:Laravel Pull QueueLaravel 拉取队列
【发布时间】:2015-02-23 00:10:36
【问题描述】:

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

从 Laravel documentation 可以很容易地看到如何将消息推送到队列,然后在 Iron.io 上设置订阅者并将队列推送到这些订阅者。但是我想将 IronMQ 用作拉取队列。我没有看到任何关于如何使用 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 作业自己处理队列。

【问题讨论】:

    标签: php laravel-4 ironmq


    【解决方案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

    【讨论】:

    • 使用您的建议,我可以从队列中检索消息,但是正文似乎以某种方式加密。请原谅我的无知,但我不确定这是否是 Laravel 默认执行的操作,或者我如何从消息正文中检索纯文本。
    • 地穴就是答案。 $decrypted = Crypt::decrypt($message->body);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2017-12-24
    • 2019-09-13
    相关资源
    最近更新 更多