1

Amazom の aws-sdk-php-2 API を使用して、Amazon Simple Queue Service (Amazon SQS) からメッセージを受信して​​います。

指定されたチュートリアルに従っています: http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-sqs.html

私の問題は次のとおりです。指定されたコードを使用すると、メッセージ本文を文字列 (XML を含む) として受け取ります。メッセージ本文をオブジェクトとして、または連想配列として取得する方法はありますか?

XML を PHP オブジェクトに変換する方法があることは認識していますが (SimpleXML が頭に浮かびます)、API の明らかな機能であるように思われるため、それが提供されていないとは思えません。しかし、API で見つけることができません ( http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.Sqs.SqsClient.html )

私の現在のコード:

<?php

use Aws\Sqs\SqsClient;

$client = SqsClient::factory(array(
    'key'    => '...',
    'secret' => '...',
    'region' => 'eu-west-1'
));

$queueUrl = 'https://sqs.eu-west-1.amazonaws.com/...';

$result = $client->receiveMessage(array(
    'QueueUrl' => $queueUrl,
    'MaxNumberOfMessages' => 3
));

foreach ($result->getPath('Messages/*/Body') as $messageBody) {
    echo "<pre>";
    echo htmlentities( print_r( $messageBody, true ) );
    echo "</pre>";
}

// or alternatively

foreach( $result->get('Messages') as $message ){

    echo "<pre>";
    echo htmlentities( print_r( $message['Body'], true ) );
    echo "</pre>";

    echo "<hr />";
}

?>
4

1 に答える 1

3

これはアプリケーションによって定義されるものであるため、SQS システムは本体の内容をあまり気にしません。

SQS を介してオブジェクトを渡したい場合は、それらを何らかの形式でシリアル化する必要があります。次のいずれかが機能します: XML、JSON、PHP シリアライゼーション (php を使用しないシステムでメッセージを送受信する必要がある場合は、このオプションを使用しないことをお勧めします)

于 2013-09-19T15:55:37.520 に答える