Существующий ответ на аналогичный вопрос не отвечает на мой текущий вопрос, так как создание собственного диспетчера очередей невозможно, также мой вопрос уникален, поскольку я использую rabbitMQ вместе с Laravel Horizon для сообщения внешнего микросервиса, который не поддерживается в существующий вопрос.
Я использую RabbitMQ в laravel для связи с моим приложением NodeJs.
Когда я отправляю сообщение из Laravel в приложение Node, оно сериализует полезную нагрузку, и, поскольку я отправляю необработанный текст html в полезной нагрузке, мое приложение node js не может десериализовать его.
Я попытался использовать php-unserialize, но он также не может десериализовать мой объект задания как этот код из Stackoverflow, но он также не смог обработать HTML в полезной нагрузке. Вот скрипка для его реализации.
Вот пример полезной нагрузки https://jsonbin.io/60e6d93d9328b059d7b9e5b0
TestDownstreamJob::dispatch(['html' => 'Some Long HTML Text'])->onQueue('node_downstream');
{
uuid: '46a76d06-d9d5-4775-b9f4-4326dd9112b3',
displayName: 'App\\Jobs\\TestDownstreamJob',
job: 'Illuminate\\Queue\\CallQueuedHandler@call',
maxTries: null,
maxExceptions: null,
backoff: null,
timeout: null,
retryUntil: null,
data: {
commandName: 'App\\Jobs\\TestDownstreamJob',
command: 'O:26:"App\\Jobs\\TestDownstreamJob":11:{s:8:"campaign";s:8:"testData";s:3:"job";N;s:10:"connection";N;s:5:"queue";s:15:"node_downstream";s:15:"chainConnection";N;s:10:"chainQueue";N;s:19:"chainCatchCallbacks";N;s:5:"delay";N;s:11:"afterCommit";N;s:10:"middleware";a:0:{}s:7:"chained";a:0:{}}'
},
id: 'f213fa1b-eabf-4686-be90-0347c9e0631a',
type: 'job',
tags: [],
pushedAt: '1625055793.0774'
}
Как я могу добавить в data
дополнительные поля, которые не сериализуются? Создание нового собственного диспетчера очередей - это то, чего я не ищу, потому что я использую Horizon и Redis для некоторых других очередей.
Я пробовал некоторые существующие пакеты, такие как siamiondavydau / external-queue и kristianedlund / laravel-external-queue, но они оба устарели и не поддерживают последнюю версию очередей Laravel
'
в качестве разделителя для десериализации большой строки. он работал с двойной кавычкой"
- person N69S   schedule 08.07.2021log(PHP.parse("O:26:
и заканчиваются двойной кавычкойchained\";a:0:{}}"));
- person N69S   schedule 08.07.2021