Задания в очереди отображаются завершенными, но не выполнили метод прослушивателя событий - PullRequest
0 голосов
/ 24 октября 2018

Я использую CakePHP (3.6) Events для отправки электронной почты по определенному действию.И хочу использовать очередь для разных действий.Для этой цели я добавил плагин Queuesadilla и использую MysqlEngine .

В основном я следил за этим блогом https://someguyjeremy.com/2017/07/queued-events-in-cakephp.html.

Iначали рабочий, выполнив эту команду.

$ bin / cake queuesadilla

Событие было поставлено в очередь и очищено через определенное время (допустим, задержка составляет 10 секунд).Но метод, который должен вызываться после отправки, не вызывается.Но это говорит

Успех.Подтверждение задания в очереди

.

У меня есть отдельный слушатель. Вот оно.

namespace App\Event;
use Cake\Event\EventListenerInterface;
use Cake\Log\Log;
use App\Queue\QueueManager;

class TestListener implements EventListenerInterface
{
    public function implementedEvents()
    {
        Log::write("debug","inside listener");

        return [
            'Controller.Reports.afterRemove' => 'afterRemove',
        ];

    }

    public function afterRemove($event)
    {

        Log::write('debug', "Test listener has been fired");
    }
}

Не понимаю, почему afterRemove () метод не был вызван?И я хочу отправить письмо от этого метода, но похоже, что он не вызывается!

И вот как я поставил задачу в очередь

 $test = [
             1=>"Test message"
         ];
          $event = new Event('Controller.Reports.afterRemove', null,$test);

          QueueManager::queue($event, [
              'delay' => 10
          ]);

Вот как я подключил мой слушатель к глобальной

 use App\Event\TestListener; 
 use Josegonzalez\CakeQueuesadilla\Queue\Queue; 
 Configure::load('queuesadilla', 'default', false); 

 Queue::setConfig(Configure::consume('Queuesadilla'));
 $testListener =new TestListener();
 EventManager::instance()->on($testListener);

Я что-то упустил?Помощь будет оценена.Спасибо!

...