【问题标题】:Amazon AWS and Beanstalkd queue Job not getting moved from current-jobs-delayed to current-jobs-readyAmazon AWS 和 Beanstalkd 队列作业未从 current-jobs-delayed 移动到 current-jobs-ready
【发布时间】:2014-10-14 10:16:00
【问题描述】:

我在我的亚马逊 aws ec2 服务器中安装了 beanstalkd。但是,当我将作业排队时,它确实会移动到当前作业延迟。但即使延迟时间仅为 5 秒到 10 秒,它也不会朝着当前作业就绪的方向前进。

服务器设置或 beanstalkd 设置有什么问题吗?

非常感谢您的帮助。

以下是代码。我正在使用 Laravel 框架和其他注意事项,我的 EC2 服务器安装了 Ubuntu 12.04 LTS。

class ShareOneCommentCommandHandler implements CommandHandler{

/**
 * Handle the command
 * @param $command
 * @return mixed
 */
public function handle($command)
{
    $date = Carbon::now()->addSeconds(5);
    Queue::later(
        $date,
        'Acme\Commands\Share\PublishPost',
        [  'uid'      => Auth::user()->id,
           'accounts' => $command->accounts,
           'message'  => $command->message,
           'link'     => $command->link,
           'title'    => $command->linktitle,
           'domain'   => $command->linkdomain,
           'image'    => $command->linkimage
        ]
    );
}

} 

【问题讨论】:

  • 您正在运行什么命令/函数将作业放入队列?你能发布执行插入的 PHP 代码吗?

标签: php laravel beanstalkd


【解决方案1】:

我自己不使用 Laravel,但我看到 Queue::later() 可以采用 DateTimeCarbon 扩展),或者是“未来秒数”的简单整数。 BeanstalkD 协议本身不处理日期,只处理秒数。

如果您可以在没有later() 函数的情况下通过 Beanstalkd 运行作业(以确认 beanstalkd 服务器和 Laraval 正常工作),那么我会将函数更改为直接使用秒数,看看是否有效。

Queue::later(5/*seconds*/, 'Command\Class', [...]);

【讨论】:

  • 我找出了问题所在。这是 Beanstalkd 版本的问题。 Ubuntu 12.04 LTS 安装了旧版本的 beanstalkd,所以我必须添加 PPA 才能安装最新版本。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
  • 2011-08-28
  • 2019-07-31
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多