我想使用SQS(生产)在队列中发送邮件,但它给了我异常错误。
异常:缺少必需的客户端配置选项:version:(string)A" version"配置值是必需的。指定版本约束可确保您的代码不会受到对服务的重大更改的影响。例如,使用Amazon S3时,您可以将API版本锁定为" 2006-03-01"。您构建的SDK具有以下版本的" sqs":*" 2012-11-05"您可以提供最新的"到"版本"配置值,以利用客户端API提供商可以找到的最新API版本。注意:使用' latest'在生产应用程序中不建议使用。可以在每个客户的API文档页面上找到可用API版本的列表:http://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html。如果您无法加载特定的API版本,则可能需要更新SDK的副本。
我的代码是
require(Config::get('paths.storage') . "sqs/aws-autoloader.php");
use Aws\Sqs\SqsClient;
$client = SqsClient::factory(array(
'key' => 'my-key',
'secret' => 'sec-key',
'region' => 'us-east-1',
));
$result = $client->createQueue(array('QueueName' => 'my-queue'));
$queueUrl = $result->get('QueueUrl');
$client->sendMessage(array(
'QueueUrl' => $queueUrl,
'MessageBody' => 'An awesome message!',
));
$result = $client->receiveMessage(array(
'QueueUrl' => $queueUrl,
));
foreach ($result->getPath('Messages/*/Body') as $messageBody) {
// Do something with the message
echo $messageBody;
}
die;
在SqsClient::factory
答案 0 :(得分:4)
异常为您提供原因。您需要指定要使用的API版本:
$client = SqsClient::factory(array(
'version' => '2012-11-05',
'key' => 'my-key',
'secret' => 'sec-key',
'region' => 'us-east-1',
));