AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon SQS 中 AWS SDK for PHP 发送和接收消息与 版本 3
要了解有关 Amazon SQS 消息的信息,请参阅 Amazon SQS Developer Guide中的向 SQS 队列发送消息和从 SQS 队列接收和删除消息。
以下示例演示如何:
使用 SendMessage 向指定队列传输消息。
使用 ReceiveMessage 从指定队列检索一条或多条消息(最多 10 条)。
版本 3 的所有示例代码在 AWS SDK for PHP 上的此处提供。GitHub
Credentials
发送消息
导入
require 'vendor/autoload.php';
use Aws\Sqs\SqsClient;
use Aws\Exception\AwsException;
示例代码
$client = new SqsClient([
'profile' => 'default',
'region' => 'us-west-2',
'version' => '2012-11-05'
]);
$params = [
'DelaySeconds' => 10,
'MessageAttributes' => [
"Title" => [
'DataType' => "String",
'StringValue' => "The Hitchhiker's Guide to the Galaxy"
],
"Author" => [
'DataType' => "String",
'StringValue' => "Douglas Adams."
],
"WeeksOn" => [
'DataType' => "Number",
'StringValue' => "6"
]
],
'MessageBody' => "Information about current NY Times fiction bestseller for week of 12/11/2016.",
'QueueUrl' => 'QUEUE_URL'
];
try {
$result = $client->sendMessage($params);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
接收和删除消息
导入
require 'vendor/autoload.php';
use Aws\Sqs\SqsClient;
use Aws\Exception\AwsException;
示例代码
$queueUrl = "QUEUE_URL";
$client = new SqsClient([
'profile' => 'default',
'region' => 'us-west-2',
'version' => '2012-11-05'
]);
try {
$result = $client->receiveMessage(array(
'AttributeNames' => ['SentTimestamp'],
'MaxNumberOfMessages' => 1,
'MessageAttributeNames' => ['All'],
'QueueUrl' => $queueUrl, // REQUIRED
'WaitTimeSeconds' => 0,
));
if (!empty($result->get('Messages'))) {
var_dump($result->get('Messages')[0]);
$result = $client->deleteMessage([
'QueueUrl' => $queueUrl, // REQUIRED
'ReceiptHandle' => $result->get('Messages')[0]['ReceiptHandle'] // REQUIRED
]);
} else {
echo "No messages in queue. \n";
}
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}