You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 6.3新增Scheduler组件无法发送消息的问题求助

Symfony 6.3新增Scheduler组件无法发送消息的问题求助

各位大佬好!我最近在尝试使用Symfony 6.3刚推出的scheduler组件,但遇到了棘手的问题——定时消息始终没有被投递到队列,启动的worker一直处于等待状态,完全没动静。

这个组件目前还没有官方文档,我只看过相关的博客文章,了解到它的实现思路和symfony/messenger组件几乎一致,核心区别是定时消息需要定义对应的ScheduleProvider来配置调度规则,还要指定专属的队列名称。

下面是我目前的配置和操作步骤,麻烦帮忙看看哪里出错了:

1. 定义ScheduleProvider

我创建了默认的调度提供者类,用#[AsSchedule("default")]注解标记,代码如下:

#[AsSchedule("default")]
class DefaultScheduleProvider implements ScheduleProviderInterface
{
    public function getSchedule(): Schedule
    {
        $schedule = new Schedule();
        $schedule->add(RecurringMessage::every("5 seconds", new TestScheduledMessage()));
        return $schedule;
    }
}

2. 配置Messenger传输与路由

在messenger的配置文件里,我专门定义了scheduler_default传输,并把我的定时消息路由到这个传输:

framework:
    messenger:
        failure_transport: failed
        transports:
            scheduler_default: '%env(MESSENGER_TRANSPORT_DSN)%'
        routing:
            App\Scheduler\TestScheduledMessage: scheduler_default

3. 验证配置有效性

我运行了symfony console debug:scheduler命令,确认调度规则已经被系统识别,显示的下一次执行时间也符合预期:

default
-------
------------------------- ------------------------------------ ---------------------------
Message                   Trigger                              Next Run
------------------------- ------------------------------------ ---------------------------
TestScheduledMessage      PeriodicalTrigger: every 5 seconds   2023-08-10T15:28:30+00:00
------------------------- ------------------------------------ ---------------------------

同时查看messenger的传输状态,scheduler_default确实存在,当前消息数为0:

------------------- -------
Transport           Count
------------------- -------
scheduler_default   0
------------------- -------

4. 启动Worker

最后我执行了symfony console messenger:consume -vv scheduler_default启动worker,结果它就一直卡在那儿,完全没接收到任何消息,日志里也没报错。

另外补充一下我的消息处理器代码,应该是没问题的:

#[AsMessageHandler]
final class TestMessageHandler
{
    public function __invoke(TestScheduledMessage $message)
    {
        // 这里是消息处理逻辑
    }
}

有没有大佬知道我是不是漏掉了什么关键配置或者操作步骤?麻烦指点一下!

备注:内容来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:43:16