gpt4 book ai didi

php - AWS SQS 使用接收句柄删除消息

转载 作者:可可西里 更新时间:2023-11-01 01:01:14 27 4
gpt4 key购买 nike

我正在尝试设置 SQS,收到消息后,我需要将其从队列中删除。

创建客户端 -

$client = Aws\Sqs\SqsClient::factory(array(
'key' => '******',
'secret' => '******',
'region' => 'ap-southeast-1'
));

发送消息

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,
));
}

接收消息

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

}

当我尝试使用接收消息代码中的接收句柄删除消息时,我从 Guzzle 收到错误 -可捕获的 fatal error :传递给 Guzzle\Service\Client::getCommand() 的参数 2 必须是数组,给定的字符串,

现在经过大量搜索后,我找到了类似的问题,这些问题表明他们使用了错误的 SDK 版本。我仍然无法缩小范围。我正在使用最新 sdk 的 zip 版本 2.6.15

最佳答案

你为什么不试试这个:

self::$client->deleteMessage(array(
'QueueUrl' => self::$queueUrl,
'ReceiptHandle' => $ReceiptHandle,
));

API docs for SqsClient::deleteMessage() 中的基本格式化示例 (和其他操作)应该有所帮助。所有执行操作的方法都只接受一个参数,即操作参数的关联数组。您应该通读 SDK's Getting Started Guide (如果您还没有),它讨论了一般情况下如何执行操作。

关于php - AWS SQS 使用接收句柄删除消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com