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', [...]);