Amazon SQS在php中发送消息属性

时间:2015-07-22 09:16:34

标签: php amazon-web-services amazon-sqs

我需要实现使用属性向SQS发送消息。 消息正文上传很好,但我的属性有问题。 消息属性需要具有属性名称,数据类型和值的关联数组。我遇到了这种错误:

AWS HTTP错误:客户端错误: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);

}

function getAttributes()返回$ attributes数组

&安培;我运行代码的测试

   $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);

$ attributes数组应该如何?

1 个答案:

答案 0 :(得分:5)

版本3.2.1及更高版本中内置了changelog

此外,您的邮件属性数组与fix for this bug中显示的格式不匹配。您的属性应如下所示:

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