第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Symfony:通過電子郵件發(fā)送失敗的消息

Symfony:通過電子郵件發(fā)送失敗的消息

PHP
繁星淼淼 2023-04-21 15:03:09
我有一個簡單的信使配置:framework:    messenger:        failure_transport: failed        transports:            async:                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'                retry_strategy:                    max_retries: 2                    delay: 10000            failed: 'doctrine://default?queue_name=failed'        routing:            someInterface: async我想知道路由到失敗的傳輸 fe 系統(tǒng)的每條消息都應(yīng)該在消息重定向時向我發(fā)送電子郵件通知。我唯一的想法是定期檢查messenger_messages包含存儲在失敗傳輸中的消息的表,但我認為這不是 symfony 方式的解決方案。你知道這個功能更聰明的解決方案嗎?我正在使用版本 5.* 的 symfony/messenger
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

最終,我應(yīng)用了以下解決方案:


<?php

/**

 * Author: writ3it

 */


namespace App\Maintenance\Messenger;



use Symfony\Component\EventDispatcher\EventSubscriberInterface;

use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;

use Symfony\Component\Messenger\MessageBusInterface;


class FailedMessageListener implements EventSubscriberInterface

{


    /**

     * @var MessageBusInterface

     */

    private MessageBusInterface $bus;


    public function __construct(MessageBusInterface $bus)

    {

        $this->bus = $bus;

    }


    public function onMessageFailed(WorkerMessageFailedEvent $event)

    {

        if ($event->willRetry()) {

            return;

        }

        $envelope = $event->getEnvelope();

        $message = $envelope->getMessage();


        $subject = sprintf("Message added to failed transport. Message: %s", \get_class($message));

        $content = serialize($message);


        $notification = new FailedMessageNotificationEvent();

        $notification->setSubject($subject)

            ->setContent($content);

        $this->bus->dispatch($notification);

    }


    /**

     * @return array

     */

    public static function getSubscribedEvents()

    {

        return [

            WorkerMessageFailedEvent::class => ['onMessageFailed', -256],

        ];

    }

}

FailedMessageNotificationEvent是一條將被我的郵件處理程序捕獲的消息。該類FailedMessageListener應(yīng)標記為kernel.event_subscriber或自動配置。


我沒有使用中間件,因為 Messenger 直接將消息發(fā)送到失敗的傳輸,沒有中間件。


查看完整回答
反對 回復(fù) 2023-04-21
?
守著一只汪

TA貢獻1872條經(jīng)驗 獲得超4個贊

我認為不可能通過配置來完成,但您可以創(chuàng)建自定義中間件并自行發(fā)送電子郵件。


查看完整回答
反對 回復(fù) 2023-04-21
  • 2 回答
  • 0 關(guān)注
  • 170 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號