问题标签 [symfony-messenger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
configuration - Symfony Messenger / RabbitMQ 检测请求消息
如果使用消息失败,默认情况下会延迟重新排队消息。有没有办法给消息添加一个计数器,这样我就可以知道消息是否是最后一次尝试?
这是期望的行为:
第一次尝试:
第一次重试:
第二次重试:
第三次重试:
php - Heroku:已安装 FFMpeg,但 php 工作人员找不到它
语境
我有一个包含 AMQPMessage 的 RabbitMQ 队列,这些消息引用需要处理的视频(本质上是剪切并在 x264 中编码)
这是导致问题的代码(非常简单)
错误信息
TL;博士:
Error: "Unable to load FFProbe"
[2019-12-03 14:55:07] messenger.ERROR:处理消息 App\Api\Message\AMQPvideoFFMPEG 时引发错误。使用 1000 毫秒延迟发送重试 #1。错误:“无法加载 FFProbe”{“消息”:“[对象] (App\Api\Message\AMQPvideoFFMPEG: {})”,“类”:“App\Api\Message\AMQPvideoFFMPEG”,“retryCount”:1 ,"delay":1000,"error":"Unable to load FFProbe","exception":"[object] (Symfony\Component\Messenger\Exception\HandlerFailedException(code: 0): Unable to load FFProbe at /app/供应商/symfony/messenger/Middleware/HandleMessageMiddleware.php:80,FFMpeg\Exception\ExecutableNotFoundException(代码:0):无法在 /app/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Driver/FFProbeDriver 加载 FFProbe .php:50,
配置和测试
在 Heroku 我有 2 dynos :
在这个平台上,我还有 3 个构建包,如下所示,带有这个特定的构建包:
为确保一切可用,这是我的检查结果:
都好 !
免责声明
此代码在另一个平台(由 kubernetes 处理)上运行良好,因此可能需要对 heroku 进行一些调整。但是找不到。
为什么这个错误,因为我的配置没有显示任何错误配置?我在这里想念什么?
symfony - 如何在 Symfony 中获取 Redis 队列中未处理消息的数量
我使用基于流的 Redis 传输。如何在 Symfony 4 中获取 Redis 队列中未处理消息的数量?我可以使用 XPENDING^ 获取待处理的消息,但如何得到未处理的消息?
symfony - 我如何配置 enqueue/enqueue-bundle/enqueue/amqp-ext 来创建队列和交换
我正在使用,symfony 4.3
我在执行方面遇到问题。我总是使用/ ,我使用配置文件来创建队列、交换和绑定......enqueue/enqueue-bundle
enqueue/amqp-ext
php-amqplib
rabbitmq-bundle
当我用 启动消费者时old_sound_rabbit_mq
,它会自动创建一个my_exchange
带有topic
类型的交换,并且它也会my_queue
用绑定键创建my.binding.#
我想用它做同样的事情enqueue-bundle
,我可以这样做吗?
symfony - 使用 symfony messenger 将消息处理程序限制为多个总线
正如Symfony messenger 组件的文档中所解释的,默认情况下,消息处理程序处理来自所有消息总线的消息。但是,可以将消息处理程序限制为特定总线,如下所示:
现在对于我正在处理的一个项目,我有三辆总线,我希望一个处理程序只处理其中两辆总线上的消息。
有人知道实现这一目标的方法吗?
symfony - Symfony 5 Messenger 不自动配置消息处理程序
我是 Symfony 框架的新手,正在尝试使用 Messenger(https://symfony.com/doc/current/messenger.html)建立一个项目。我的理解是在使用“实现 MessageHandlerInterface”设置处理程序类之后,处理程序应该可以使用,但它似乎对我不起作用。我尝试了几种不同的方法,包括从头开始建立一个新项目。我正在使用 Symfony 5.0.4。
我这样设置项目:
然后我创建了一个新的信使和处理程序,并从控制器调用它。这样做我得到了异常:“<strong>No handler for message "App\Message\Message".”</p>
输出:
我的代码与消息处理程序文档中的示例基本相同,但我将在此处添加。
php - 没有传输支持给定的 Messenger DSN 原则
为 Symfony MessengerNo transport supports the given Messenger DSN "doctrine://default"
执行命令时出现错误。messenger:setup-transports
为消息、处理程序和调度程序同步处理消息。
交响乐:4.4.2
Symfony/信使:4.4
学说/规范:2.7
messenger.yml
doctrine.yml
redis - Symfony Messenger:重试延迟不适用于 Redis 传输
我有一个 Symfony 4 应用程序,它使用Symfony Messenger组件(版本 4.3.2)来发送消息。对于异步消息处理,配置了一些 Redis 传输并且它们工作正常。但是后来我决定当消息处理失败时,其中一个应该重试几次。我配置了重试策略,传输实际上开始在失败时重试,但它似乎忽略了延迟配置(键、、、delay
)multiplier
,max_delay
并且所有重试尝试总是在没有任何延迟的情况下进行,都在一秒或类似的短时间跨度内进行,这在这个用例中确实是不可取的。
我的 Messenger 配置 ( config/packages/messenger.yaml
) 如下所示
我尝试用 Doctrine 替换 Redis(作为重试传输的实现),瞧——延迟开始按预期工作。因此,我怀疑 Redis 传输实现不支持延迟重试。但是我仔细阅读了文档,搜索了相关的 Github 问题,仍然没有找到明确的答案。
所以我的问题是:Redis 传输是否支持延迟重试?如果是这样,我该如何让它工作?
symfony - 使用 symfony/messenger 时切换 symfony/mailer 中的 sendmail 参数
本地开发机器msmtp
用于发送邮件,效果很好。但它不接受/usr/sbin/sendmail -bs
,它只适用于/usr/sbin/sendmail -t
. 我可以看到,当为SendmailTransport
构造函数使用其他参数时,我可以更改它,但实际上我从未创建 SendmailTransport 的实例 - Messenger 的使用者独自完成了这一切。
通过 Messenger 使用异步邮件时如何更改 Sendmail 参数?
php - 进程数是否会影响 Messenger 的顺序执行?
我们有一个简单的用例:我们需要按顺序消费队列中的消息(消息 #1 在消息 #2 开始执行之前完成执行)。
Symfony 文档中建议的主管配置是:
是否numprocs=2
意味着 2 个工作人员将“同时”使用消息,即工作人员 2 将在消息 #1 完成之前开始执行消息 #2?
如果是,有没有办法让 2 个工作人员(如果我们需要同时执行其他一些消息类型)并且仍然让这种特定类型的消息按顺序执行?