ksb*_*ksb 3 php ubuntu amazon-sqs amazon-web-services
我正在尝试设置 SQS,收到消息后,我需要将其从队列中删除。
创建客户端 -
$client = Aws\Sqs\SqsClient::factory(array(
'key' => '******',
'secret' => '******',
'region' => 'ap-southeast-1'
));
Run Code Online (Sandbox Code Playgroud)
发送消息
public static function SendMessage()
{
if(!isset(self::$queueUrl))
self::getQueueUrl();
$command = "This is a command";
$commandstring = json_encode($command);
self::$client->sendMessage(array(
'QueueUrl' => self::$queueUrl,
'MessageBody' => $commandstring,
));
}
Run Code Online (Sandbox Code Playgroud)
接收消息
public static function RecieveMessage()
{
if(!isset(self::$queueUrl))
self::getQueueUrl();
$result = self::$client->receiveMessage(array(
'QueueUrl' => self::$queueUrl,
));
// echo "Message Recieved >> ";
print_r($result);
foreach ($result->getPath('Messages/*/Body') as $messageBody) {
// Do something with the message
echo $messageBody;
//print_r(json_decode($messageBody));
}
foreach ($result->getPath('Messages/*/ReceiptHandle') as $ReceiptHandle) {
self::$client->deleteMessage(self::$queueUrl, $ReceiptHandle);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用接收消息代码中的收据句柄删除消息时,我收到来自 Guzzle 的错误 - Catchable fatal error: Argument 2 Passed to Guzzle\Service\Client::getCommand() must be an array, string给定,
现在,经过大量搜索后,我发现了类似的问题,表明他们使用了错误的 SDK 版本。但我仍然无法缩小范围。我使用的是最新sdk 2.6.15的zip版本
你为什么不试试这个:
self::$client->deleteMessage(array(
'QueueUrl' => self::$queueUrl,
'ReceiptHandle' => $ReceiptHandle,
));
Run Code Online (Sandbox Code Playgroud)
API 文档中的基本格式化示例(以及其他操作)应该会有所帮助。所有执行操作的方法都只接受一个参数,该参数是操作参数的关联数组。您应该通读SDK 的入门指南(如果您还没有),其中讨论了如何执行一般操作。SqsClient::deleteMessage()
| 归档时间: |
|
| 查看次数: |
3431 次 |
| 最近记录: |