Я хочу получать сообщения, отправленные из Amazon в формате XML, через очередь Amazon SQS с помощью команды laravel 5.1 queue: listen, но при этом появляется сообщение об ошибке
Аргумент 1, передаваемый в Illuminate \ Queue \ Jobs \ Job :: resolAndFire (), должен иметь тип массива с указанным нулевым значением и вызываться в / opt / PhpstormProjects / Amazon_Requester / vendor / laravel / framework / src / Illuminate / Queue / Jobs / SqsJob .php в строке 52 и определен
Итак, я посмотрел на вышеприведенный класс, где он вызывается через метод fire:
$this->resolveAndFire(json_decode($this->getRawBody(), true));
Проблема здесь в том, что json_decode (…) возвращает null
, но когда я выкидываю данные сообщения, я получаю xml-ответ, как и ожидалось.
Если бы я изменил способ, которым слушатель обрабатывает мой ответ, я не смог бы больше обновлять laravel, не нарушая мой код, поэтому я сомневаюсь, есть ли другой способ сказать laravel, как обрабатывать ответ?
Очередь Laravel ожидает поступления элементов очереди от Laravel. Элементы очереди содержат полезную нагрузку JSON с информацией о том, какой обработчик запускать, какие данные передавать на него и т. Д. Если вы хотите прослушивать созданные в Amazon элементы очереди, вам, вероятно, не нужно использовать для этого систему очередей Laravel и получить доступ к SQS через AWS SDK для PHP напрямую.
Других решений пока нет …