问题标签 [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 回答
178 浏览

symfony - 在 Symfony Messenger 组件中使用独立的发件人

我正在使用 Symfony 4.2 并且有一条消息要通过 messenger 组件发送,这是一条应该通过几个渠道(例如 SMS 和电子邮件)发送的通知。我想知道如何使这些发件人独立(例如第一个通道失败并抛出异常) - 如何尝试通过第二个发件人独立发送?目前,当链中的一个发送者失败时,其余的无法尝试传递通知。

在发送者级别捕获异常似乎不是一个好的解决方案,因为返回信封会导致它将被标记为发送不正确的内容。

我已经开始为每个频道制作消息以保持 sentStamp 约定,但似乎应该是一条消息和几个频道监听一条消息(甚至配置用senders关键字指示):

对于这样的问题有一些好的方法吗?

0 投票
0 回答
611 浏览

php - Using Symfony Messenger without framework

I'm trying to use Symfony Messenger in a project which does not use whole Symfony Framework.

I achieved creating a message, routing it to my handler and getting the result back with following code:

But i can't find the way to add AMQP Transport to this config for sending my commands to RabbitMQ.

How can i do this? Thanks.

0 投票
1 回答
413 浏览

rabbitmq - Symfony:我如何在 Messenger 中使用远程过程调用(RPC)?

我正在尝试使用 Symfony Messenger 进行 RPC,但我被卡住了。查看 Messenger 组件,它看起来好像没有添加实现:

https://github.com/webnet-fr/symfony/branches/all https://github.com/symfony/symfony/pull/34337/commits/06a5a434ce6e5349a33e81c97d83c8b4392603cd

但是,我告诉自己,如果它没有被添加,那是因为应该有办法让它工作,但是......我找不到它。有人可以确认是否可以使用 Messenger 进行 RPC?如果你有任何文件,我是一个接受者,我会感谢你的。

0 投票
1 回答
459 浏览

asynchronous - Symfony Messenger 在所有高优先级消息之后使用低优先级消息

有没有办法阻止消费者吃低优先级的消息,直到所有高优先级的消息都被消费完?

我正在考虑检查低优先级消息处理程序中的队列状态,但这种解决方案似乎并不优雅并且可能很危险。

0 投票
1 回答
788 浏览

php - 通过 Symfony Messenger 执行邮件发送

我正在为我的代码寻求很大的帮助。我尽我所能连接一些 Symfony 功能,我想我要去某个地方..

我正在使用 Symfony 4.2 和 API 平台,并尝试添加发送电子邮件消息以异步使用的过程。

我有我的评论实体,它在持久实体上触发它。它触发了我的 __invoke 函数,但是有一个问题。我不太明白我接下来应该做什么。

正如这里的文档中所说,首先我需要配置 Data Persister:

我使用的是 Symfony 4.2,所以我安装了 swift mailer 电子邮件客户端。

我还定义了 EmailSubscriber:

最后我实现了处理程序:

当我在我的 api 平台中触发持久实体时,调用函数中的 var_dump() 被捕获。

我不知道是否有问题以及下一步该怎么做。我需要使用 Symfony Messenger 异步执行电子邮件发送。

在我的 .env 文件中:

和框架 .yaml

还有什么方法可以向用户表中发布的任何随机邮件发送电子邮件?我想为此设置邮件配置。

0 投票
1 回答
1632 浏览

symfony - Symfony Messenger:使用消息接口作为处理程序时重试失败的消息__invoke type-hint

我在 Symfony 4.4 应用程序中使用 Symfony Messenger 组件。我正在通过 RabbitMQ 异步处理消息,并通过 Doctrine 传输将失败的消息存储在数据库中。

这是信使配置:

这是一个示例处理程序,它处理实现SampleMessageInterface接口的消息。

在面临任何消息失败之前,一切正常。尝试重试或显示失败消息时,问题在失败后开始显示。让我们试试这个php bin/console messenger:failed:show命令:

结果:

我猜想 Symfony 需要反序列化失败的消息,之前序列化并存储在数据库中,但因为它是一个接口,所以不能这样做。

我该如何解决这个问题?有没有办法使用类实现而不是接口来序列化失败的消息?

0 投票
2 回答
2456 浏览

symfony - Symfony messenger 工作人员在主管下运行时不会停止

我正面临 Symfony Messenger 组件的奇怪行为。我根据文档进行设置,并按照此处messenger:stop-workers的说明在每次部署时发出信号。但是,我们的系统中出现了一个错误,我追溯到 Messenger 工作人员正在使用旧版本的代码这一事实。

经过进一步调查,这就是我们的设置中发生的情况:

  • 一个工人正在运行,由主管管理。
  • 只是为了调试这种特殊情况,我在终端app/console messenger:consume --env=prod -vv async中启动了一个新工作人员,看看会发生什么
  • 我发出停止命令app/console messenger:stop-workers --env=prod
  • 我现在希望这两个工人都会被停止(并且主管会重新启动它正在处理的那个)。但是,这不会发生。“调试”工作人员确实停止了,但在主管下运行的工作人员什么也不做。

主管管理的工作人员被限制为 1 小时的处理时间,之后它们将停止并重新启动。我可以看到supervisord.log这很好用。每小时都有关于进程停止和启动的日志条目。但是他们并没有停止messenger:stop-workers命令。

我正在寻找关于为什么会发生这种情况的想法。我阅读了工人的实现,并通过缓存发送了关闭信号,但我没有发现我们的配置有任何问题。

0 投票
2 回答
1017 浏览

symfony - 如何关闭 symfony messenger 组件的日志记录

我有一个 Symfony 网站,它介于实际实现和登台之间(我的一个特殊客户使用它)。该服务器上的日志记录保持打开状态,因为这有助于在不时出现问题时提供帮助(并且它们经常以非明显、非错误/异常的方式出错)。大多数记录的行都是由 Doctrine 执行的查询,这对我来说非常有用,但是我确实手动禁用了一些巨大的、重复的和经过良好测试的操作的日志记录,这些操作会发送数百个查询,以使日志更易于导航, 如果需要的话。

我的问题是:如何禁用从 Symfony Messenger 组件内部完成的日志记录?具体来说,由学说传输(我使用)完成的日志记录,它每秒用以下行向我的日志发送垃圾邮件(乘以我运行的 supervisord 进程的数量):

由于这些消息是由原则生成的,我无法通过日志通道将它们过滤掉 - 因为这会禁用所有原则日志消息,这不是我想要的。我也不想将日志记录级别提高到高于 DEBUG 的级别。我只想从日志中删除这些特定消息。

0 投票
1 回答
670 浏览

symfony - 在 Symfony Messenger 异步消息处理程序上使用选民/权限的最佳方式?

我正在开发一个安装了 Symfony Messenger 组件来处理异步消息的应用程序。消息处理程序需要检查某些特定用户的一些权限,例如如果一个确定的用户是否应该收到一封包含信息的电子邮件,例如是否具有编辑权限。

为了实现这一点,我们使用 Symfony voters,但是当我们没有任何用户登录到系统时,比如控制台命令和异步消息,这很烦人。什么是最好的解决方案?这是我的主要想法:

  • 使用消息的安全上下文强制“登录”

    • Pro:一种无需额外服务即可检查权限的方法。选民是服务。
    • 缺点:当我有一组用户检查时,我应该多次执行“安全上下文登录”操作。我认为这很难。
  • 设计一个域服务来处理它。

    • 优点:无需强制登录即可解决问题
    • 缺点:重复代码或根据上下文(请求、控制台命令或异步队列)执行相同操作的不同方法
  • 应由选民和域服务调用的服务

    • 缺点:我认为这会增加更简单问题的复杂性

什么是最好的方法?除了前三点之外还有什么想法吗?

非常感谢

0 投票
3 回答
1352 浏览

symfony - Symfony messenger 和 mailer:如何添加 binding_key?

我有一个使用 messenger 和 rabbitMQ 正在运行的 Symfony 4.4 项目。我有一个带有 2 个队列的异步传输。

我需要将带有symfony/mailer组件的电子邮件发送到电子邮件队列。

如何将 binding_key 添加到mailer以便让 rabbitMQ 知道如何处理电子邮件?