如何在信封中设置事件名称和延迟时间?

问题描述 投票:0回答:1

我正在使用symfony 4 +排队(https://github.com/sroze/messenger-enqueue-transport + https://packagist.org/packages/enqueue/pheanstalk)在beantalk中运行异步作业。

现在我有:

/**
 * @var Symfony\Component\EventDispatcher\EventDispatcherInterface 
 */
private $eventDispatcher;

$event = new ArticleEvent("test title", "test description");
$this->eventDispatcher->dispatch($event, "article.publish");

但是我希望此作业在延迟后得到处理。

文档使我像这样重构它:

use Enqueue\MessengerAdapter\EnvelopeItem\TransportConfiguration;
use Symfony\Component\Messenger\Envelope;

$event = new ArticleEvent("test title", "test description");
$transportConfig = (new TransportConfiguration())->setDeliveryDelay(5000);

$this->eventDispatcher->dispatch((new Envelope($event))->with($transportConfig));

这里的问题是我看不到事件名称(article.publish)的放置位置

(基于https://github.com/sroze/messenger-enqueue-transport#setting-custom-configuration-on-your-message

php symfony symfony4 symfony-messenger
1个回答
0
投票

使用Messenger时,您没有“事件名称”。

您只需要调度适当的消息实例。

如果发布的是文章,而不是具有通用的ArticleEvent类,请构建PublishArticle命令或ArticlePublished事件。

两者之间的选择取决于您是注册事件(已经发生的事情)还是命令(您想发生的事情)。

© www.soinside.com 2019 - 2024. All rights reserved.