Написание собственного драйвера очереди Laravel - PullRequest
0 голосов
/ 20 февраля 2019

Я пишу собственный драйвер очереди Laravel 5.5 для взаимодействия с MQTT.Я использую расширение Mosquitto MQTT .

Не так много документации о том, как это реализовать.Я застрял в понимании ожидаемой полезной нагрузки.Когда вызывается мой метод pop() и обрабатывается мой класс MqttJob, я получаю сообщение об отсутствии индекса 'job'.Я попытался взглянуть на использование различных других драйверов, включая Redis, Beanstalkd и других пользовательских драйверов, таких как Kafka и RabbitMQ , но все еще вижу, где их реализации соответствуют ожидаемой полезной нагрузке.структура.

Если у кого-то есть опыт или понимание того, как очереди, рабочие и рабочие места взаимодействуют, это будет высоко оценено.

Этот пост похож на то, что яЯ спрашиваю.

ОБНОВЛЕНИЕ Я реализовал метод getRawBody(), как:

public function getRawBody()
{
    return json_encode([
        'job'  => 'Illuminate\\Queue\\CallQueuedHandler@call',
        'data' => [
            'commandName' => get_class($this),
            'command'     => serialize(clone $this),
        ],
    ]);
}

Но теперь я получаю следующую ошибку:

local.ERROR: Serialization of 'Closure' is not allowed {"exception":"[object] (Exception(code: 0): Serialization of 'Closure' is not allowed

Я не уверен, какое свойство моего MqttJob является закрытием.clone должен выполнять поверхностное копирование, а я не реализовал метод __clone().

...