symfony/scheduler
是从6.3开始的一个新组件,它还没有文档,所以我希望有人知道如何让这个组件工作.我所读到的都是他们的博客帖子,be found here美元.
Jille将该组件的实现描述为与symfony/messenger
组件几乎相同,唯一的区别是调度消息需要具有定义调度的ScheduleProvider
以及它自己的队列名称.
我将我的日程表添加如下:
#[AsSchedule("default")]
class DefaultScheduleProvider implements ScheduleProviderInterface
{
public function getSchedule(): Schedule
{
$schedule = new Schedule();
$schedule->add(RecurringMessage::every("5 seconds", new TestScheduledMessage()));
return $schedule;
}
}
然后,我在Messenger配置中定义了消息队列:
framework:
messenger:
failure_transport: failed
transports:
scheduler_default: '%env(MESSENGER_TRANSPORT_DSN)%'
routing:
App\Scheduler\TestScheduledMessage: scheduler_default
然后我运行symfony console debug:scheduler
以验证是否检测到该计划:
default
-------
------------------------- ------------------------------------ ---------------------------
Message Trigger Next Run
------------------------- ------------------------------------ ---------------------------
TestScheduledMessage PeriodicalTrigger: every 5 seconds 2023-08-10T15:28:30+00:00
------------------------- ------------------------------------ ---------------------------
信使认出了我的交通工具:
------------------- -------
Transport Count
------------------- -------
scheduler_default 0
------------------- -------
然后我通过symfony console messenger:consume -vv scheduler_default
设置了我的工人,但我从未收到任何消息.它只是永远坐在那里,什么也不做.
我还需要做什么才能让事情恢复正常吗?
编辑
另外,如果它可能是有用的信息,这是我的联系人:
#[AsMessageHandler]
final class TestMessageHandler
{
public function __invoke(TestScheduledMessage $message)
{
// do something with your message
}
}