Php AWS SQS使用接收句柄删除邮件

Php AWS SQS使用接收句柄删除邮件,php,ubuntu,amazon-web-services,amazon-sqs,Php,Ubuntu,Amazon Web Services,Amazon Sqs,我正在尝试设置SQS,在收到消息后,我需要将其从队列中删除 创建客户端- $client = Aws\Sqs\SqsClient::factory(array( 'key' => '******', 'secret' => '******', 'region' => 'ap-southeast-1' )); 发送消息 publi

我正在尝试设置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);
        }

    }
接收消息

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- 可捕获的致命错误:传递给Guzzle\Service\Client::getCommand()的参数2必须是数组,给定字符串,


现在在搜索了很多之后,我发现了类似的问题,这些问题表明他们使用了错误的SDK版本。不过,我仍然无法缩小范围。我正在使用最新sdk的zip版本

为什么不试试这个:

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

中的基本格式示例(以及其他操作)应该会有所帮助。所有执行操作的方法都只接受一个参数,即操作参数的关联数组。您应该通读(如果尚未阅读),其中介绍了如何执行一般操作。

先生。。你是大师。。而我只是一个愚蠢的傻瓜!!我会把它通读一百万遍,但看不出我的错误。。。谢谢