问题标签 [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.

0 投票
1 回答
212 浏览

configuration - Symfony Messenger / RabbitMQ 检测请求消息

如果使用消息失败,默认情况下会延迟重新排队消息。有没有办法给消息添加一个计数器,这样我就可以知道消息是否是最后一次尝试?

这是期望的行为:

第一次尝试:

第一次重试:

第二次重试:

第三次重试:

0 投票
1 回答
649 浏览

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 个构建包,如下所示,带有这个特定的构建包

带有用于 ffmpeg 的自定义 buildpack

为确保一切可用,这是我的检查结果:

都好 !

免责声明

此代码在另一个平台(由 kubernetes 处理)上运行良好,因此可能需要对 heroku 进行一些调整。但是找不到。

为什么这个错误,因为我的配置没有显示任何错误配置?我在这里想念什么?

0 投票
1 回答
401 浏览

symfony - 如何在 Symfony 中获取 Redis 队列中未处理消息的数量

我使用基于流的 Redis 传输。如何在 Symfony 4 中获取 Redis 队列中未处理消息的数量?我可以使用 XPENDING^ 获取待处理的消息,但如何得到未处理的消息?

0 投票
0 回答
484 浏览

symfony - 我如何配置 enqueue/enqueue-bundle/enqueue/amqp-ext 来创建队列和交换

我正在使用,symfony 4.3我在执行方面遇到问题。我总是使用/ ,我使用配置文件来创建队列、交换和绑定......enqueue/enqueue-bundleenqueue/amqp-extphp-amqplibrabbitmq-bundle

当我用 启动消费者时old_sound_rabbit_mq,它会自动创建一个my_exchange带有topic类型的交换,并且它也会my_queue用绑定键创建my.binding.# 我想用它做同样的事情enqueue-bundle,我可以这样做吗?

0 投票
1 回答
585 浏览

symfony - 使用 symfony messenger 将消息处理程序限制为多个总线

正如Symfony messenger 组件的文档中所解释的,默认情况下,消息处理程序处理来自所有消息总线的消息。但是,可以将消息处理程序限制为特定总线,如下所示:

现在对于我正在处理的一个项目,我有三辆总线,我希望一个处理程序只处理其中两辆总线上的消息。

有人知道实现这一目标的方法吗?

0 投票
1 回答
2684 浏览

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>

输出:

我的代码与消息处理程序文档中的示例基本相同,但我将在此处添加。

0 投票
0 回答
439 浏览

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

0 投票
1 回答
855 浏览

redis - Symfony Messenger:重试延迟不适用于 Redis 传输

我有一个 Symfony 4 应用程序,它使用Symfony Messenger组件(版本 4.3.2)来发送消息。对于异步消息处理,配置了一些 Redis 传输并且它们工作正常。但是后来我决定当消息处理失败时,其中一个应该重试几次。我配置了重试策略,传输实际上开始在失败时重试,但它似乎忽略了延迟配置(键、、、delaymultipliermax_delay并且所有重试尝试总是在没有任何延迟的情况下进行,都在一秒或类似的短时间跨度内进行,这在这个用例中确实是不可取的。

我的 Messenger 配置 ( config/packages/messenger.yaml) 如下所示

我尝试用 Doctrine 替换 Redis(作为重试传输的实现),瞧——延迟开始按预期工作。因此,我怀疑 Redis 传输实现不支持延迟重试。但是我仔细阅读了文档,搜索了相关的 Github 问题,仍然没有找到明确的答案。

所以我的问题是:Redis 传输是否支持延迟重试?如果是这样,我该如何让它工作?

0 投票
1 回答
73 浏览

symfony - 使用 symfony/messenger 时切换 symfony/mailer 中的 sendmail 参数

本地开发机器msmtp用于发送邮件,效果很好。但它不接受/usr/sbin/sendmail -bs,它只适用于/usr/sbin/sendmail -t. 我可以看到,当为SendmailTransport构造函数使用其他参数时,我可以更改它,但实际上我从未创建 SendmailTransport 的实例 - Messenger 的使用者独自完成了这一切。

通过 Messenger 使用异步邮件时如何更改 Sendmail 参数?

0 投票
1 回答
375 浏览

php - 进程数是否会影响 Messenger 的顺序执行?

我们有一个简单的用例:我们需要按顺序消费队列中的消息(消息 #1 在消息 #2 开始执行之前完成执行)。

Symfony 文档中建议的主管配置是:

是否numprocs=2意味着 2 个工作人员将“同时”使用消息,即工作人员 2 将在消息 #1 完成之前开始执行消息 #2?

如果是,有没有办法让 2 个工作人员(如果我们需要同时执行其他一些消息类型)并且仍然让这种特定类型的消息按顺序执行?