Amazon AWS и очередь Beanstalkd Задание не переносится с отложенных текущих рабочих мест на текущие рабочие места

Я установил beanstalkd на мой сервер amazon aws ec2. Но когда я ставлю работу в очередь, она переходит к текущей работе с задержкой. Но он не продвигается к текущим рабочим местам, даже если время задержки составляет всего 5 с 10 с.

Что-то не так в настройке сервера или beanstalkd?

Помощь была бы очень признательна.

Ниже приведен код. Я использую Laravel Framework и другие примечания. На моем 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
        ]
    );
}

} 

1 ответ

Я сам не пользуюсь Laravel, но вижу, что Queue::later() может взять либо DateTime (который Carbon расширяется), или простое целое число "количество секунд в будущем". Протокол BeanstalkD не имеет дело с датами, а только с количеством секунд.

Если вы можете запускать задания через Beanstalkd без later() функция (чтобы убедиться, что сервер beanstalkd и Laraval в целом работают), тогда я бы изменил функцию, чтобы просто использовать количество секунд напрямую и посмотреть, работает ли это.

Queue::later(5/*seconds*/, 'Command\Class', [...]);
Другие вопросы по тегам