Amazon SQS отправляет атрибуты сообщения в переполнении стека

Мне нужно реализовать отправку сообщений в SQS с атрибутами.
Тело сообщения загружается нормально, но у меня проблема с атрибутами.
Для атрибутов сообщения требуется ассоциативный массив с именем атрибута, типом данных и значением. Я получил такую ​​ошибку:

Ошибка HTTP AWS: ошибка клиента: 400 InvalidParameterValue (клиент): запрос должен содержать непустое имя атрибута сообщения.

функция для отправки сообщений:

public function uploadMessage(DataTransferObjectInterface $dataTransferObject)
{

$command = $this->client->getCommand(
'SendMessage',
[
'QueueUrl' => $this->queueUrl->value(),
'MessageBody' => $dataTransferObject->getBody()->value(),
'MessageAttributes' => $dataTransferObject->getAttributes(),

]
);

$this->client->execute($command);

}

Функция getAttributes () возвращает массив $ attribute

& тест, где я запускаю код

   $attributes = [
'TestName' =>
[
'Name'=>'test',
'DataType' => 'string',
'Value' => 'string',

]
];
$age = array("Peter" => "35", "Ben" => "9", "Joe" => "43");
$json = json_encode($age);
$body = Json::get($json);

$dto = new DataTransferObject($attributes, $body);

$uploader = new SQSManager($sqsClient, $queueUrl);
$uploader->uploadMessage($dto);

Как должен выглядеть массив $ attribute?

3

Решение

исправить эту ошибку встроен в версию 3.2.1 и выше.

Кроме того, ваш массив атрибутов сообщения не соответствует формату, показанному в документация. Ваши атрибуты должны выглядеть так:

$attributes = [
'<attribute name>' => [
'DataType' => 'String',
'StringValue' => '<attribute value>',
],
];
5

Другие решения

Других решений пока нет …