sonataNotificationBundle, электронные письма сохраняются в базе данных, но потребитель swiftmailer не запускается, и электронные письма не отправляются

Я интегрировал sonataNotificationBundle, я настроил серверную часть для доктрины, электронные письма сохраняются в таблице database notification__message, но не отправляются.

Как отправлять электронные письма из базы данных с помощью потребителя swiftmailer. Ниже представлена ​​конфигурация

sonata_notification:
    backend: sonata.notification.backend.doctrine
    backends:
        doctrine:
            message_manager: sonata.notification.manager.message.default
            max_age:         86400     # max age in second
            pause:           500000    # delay in microseconds
            states:                    # raising errors level
                in_progress: 10
                error:       20
                open:        100
                done:        10000

Запрос в журнале всегда ищет тип по умолчанию, хотя я упомянул --type = mailer в команде запуска бэкэнда.

В consumer.yml я зарегистрировал SwiftMailerConsumer как прослушиватель событий,

    <service id="sonata.notification.consumer.swift_mailer" class="Sonata\NotificationBundle\Consumer\SwiftMailerConsumer">
        <tag name="sonata.notification.consumer" type="mailer" />
        <tag name="sonata.notification.consumer.event_listener" event="default" method="process" />
        <argument type="service" id="mailer" />
    </service>

В методе MessageManagerBackend-> handle отправляется событие "по умолчанию",

 $dispatcher->dispatch($message->getType(), $event);

ниже журнал

[2013-07-12 19:55:16] doctrine.DEBUG: SELECT t0.type AS type1, t0.body AS body2, t0.state AS state3, t0.restart_count AS restart_count4, t0.created_at AS created_at5, t0.updated_at AS updated_at6, t0.started_at AS start_at7, t0.completed_at AS completed_at8, t0.id AS id9 FROM notification__message t0 ГДЕ t0.state =? И t0.type =? LIMIT 10 [0, "по умолчанию"] []

Нужно ли мне писать другой бэкэнд для почтовой программы и настраивать в config.yml вот так?

sonata_notification:
    backend: sonata.notification.backend.doctrine
    consumer:
        swift_mailer:
            path:         %kernel.root_dir%/../vendor/swiftmailer
    backends:
        doctrine:
            message_manager: sonata.notification.manager.message.mailer

person vishal    schedule 12.07.2013    source источник
comment
ты запустил команду?   -  person Emii Khaos    schedule 12.07.2013
comment
да, соната приложения / консоли: уведомление: start --env = prod --iteration = 250 --type = email   -  person vishal    schedule 12.07.2013


Ответы (1)


Ниже представлена ​​рабочая конфигурация sonataNotificationBundle для потребителя swiftmailer. Не нужно вносить изменения в какие-либо другие файлы.

sonata_notification:
    backend: sonata.notification.backend.doctrine
    queues:
        - { queue: mailer, routing_key: mailer }
        - { queue: catchall, default: true }
    backends:
        doctrine:
            message_manager: sonata.notification.manager.message.default
            max_age:         86400     # max age in second
            pause:           500000    # delay in microseconds
            states:                    # raising errors level
                in_progress: 10
                error:       20
                open:        100
                done:        10000
person vishal    schedule 06.08.2013