Amazon web services AWS SQS删除批处理消息,错误:TooManyEntriesInBatchRequest

Amazon web services AWS SQS删除批处理消息,错误:TooManyEntriesInBatchRequest,amazon-web-services,amazon-sqs,aws-php-sdk,Amazon Web Services,Amazon Sqs,Aws Php Sdk,我试图一次删除AWS SQS批处理消息,它删除数组块的第一个10消息,但不删除第二个块,抛出错误 AWS.SimpleQueueService.TooManyEntriesInBatchRequest(客户端):最大值 每个请求的条目数为10。你已经发送了12个 我正在遵循这些步骤 我有12条消息的数组,并将它们转换成如下块 $chunks = array_chunk($entries, 10, true); // make chunks of 10 items per array 块1

我试图一次删除
AWS SQS
批处理消息,它删除数组块的第一个
10
消息,但不删除第二个块,抛出错误

AWS.SimpleQueueService.TooManyEntriesInBatchRequest(客户端):最大值 每个请求的条目数为10。你已经发送了12个

我正在遵循这些步骤

我有12条消息的数组,并将它们转换成如下块

$chunks = array_chunk($entries, 10, true); // make chunks of 10 items per array

块1


块2

Array
(
    [10] => Array
        (
            [Id] => 1f2f5165-56a1-4df4-a70a-d22869b408ec
            [ReceiptHandle] => AQEByG1UiIz/+Uqlb3R5gkfVqOzNrWPYq8YEc3XluoqYJpVQD13TcpeFAPNU4C0NybzsKtRLLQfsM58dUehrlGP5JmU9H+ROgAGDF5R6qVNyot+dJtRKmUJdmt2A2r6NkiYMg7hgrU4+upRMhTlOAY/Ni5HGOvJbhvR/upHKSVe5gWoabQTG6Puvvg8L/pamET+PcImDxQPgSNzLc9L/8SwhTwYyqdYG4CwhymelqiAtI7siHpyBBmC24JyX6IWL/3pJenI0yBZhREdNsd2hHLcZAWoCrhq4EFsneAgcnm9UWOCuorceCOQHU94trl38z9tbXXbpEjI5ZVWlrhc6Abx6vknegjIdAoR2gLwkvUdSTHkV4QxoFZOKjLoYJBeV2ugaHgJi/52/DdL9HNQoQziwZg==
        )

    [11] => Array
        (
            [Id] => 726b8b47-be1f-4aea-aa30-f24d08361d52
            [ReceiptHandle] => AQEBcWCMm29Cic5pJH+1I0ppsiQxjQw9Q0znj26PZ2P1YQqu5tMvTsCX6t63JgoYvxzH34Ss6oXxzuXe8vXiIVoj7kSFiZdBnPVq+tcEoEFnCfBOtg2WQVONWlN5JYulAIewxXbQS2JZJjIu4HWHHzhS0oRw62OMz325/pbcuaW2a1mfU+Zs7bF9eK6AOCl4RJ0VBACSodpNJtlyqOxnS7C6zkuuVERGuQIxhFFTx44pAHzvQ3+WklGkY05QNNdxUaGzvQGhqzlwFiPwhBi6Cg22PgrSwnSt8Aef1azykibngUP035LOi1ig6Tc5jrWFX39MN+UYt6AVBTELxv4uTIi1VFJue8f8mRxJSL4H+YQH0BBy/zxPAJZANK4E066jbxtgffk8ktJcZOGBCUuFeFSrVA==
        )

)
然后循环浏览条目并执行删除操作

//loop through and delete one by one
foreach($chunks as $k=>$entry_chunk){

    $result = $this->Sqs->deleteMessageBatch([
        'Entries' => $entry_chunk,
        'QueueUrl' => $queueUrl
    ]);
}
这会删除第一个区块(共10个项目),而第二个区块进入,这会给我错误

AWS.SimpleQueueService.TooManyEntriesInBatchRequest(客户端):最大值 每个请求的条目数为10。你已经发送了12个

如何一次删除多封邮件

$chunks = array_chunk($entries, 10, true);
第三个论点似乎是错误的,正因为如此,在第二部分:

 [10] => Array
第二个块的第0个元素不应该有索引10,是吗?应该是0。这似乎意味着在它之前有10个未定义的元素,所以显然您仍然试图在一批中删除12条消息。。。10个无效的、未定义的和2个剩余的。由于这个错误,SQS可能不会告诉您前10条消息根本没有意义,因为您已经超过了每个请求的最大消息数(即10条),因此请求已经无效

第三个参数
$preserve\u keys
设置为
true
,但应为
false

保留密钥

$chunks = array_chunk($entries, 10, true); // make chunks of 10 items per array
当设置为
TRUE时
键将被保留。默认值为
FALSE
,它将以数字方式重新索引块

第三个论点似乎是错误的,正因为如此,在第二部分:

 [10] => Array
第二个块的第0个元素不应该有索引10,是吗?应该是0。这似乎意味着在它之前有10个未定义的元素,所以显然您仍然试图在一批中删除12条消息。。。10个无效的、未定义的和2个剩余的。由于这个错误,SQS可能不会告诉您前10条消息根本没有意义,因为您已经超过了每个请求的最大消息数(即10条),因此请求已经无效

第三个参数
$preserve\u keys
设置为
true
,但应为
false

保留密钥

$chunks = array_chunk($entries, 10, true); // make chunks of 10 items per array
当设置为
TRUE时
键将被保留。默认值为
FALSE
,它将以数字方式重新索引块


这是怎么连接到的?抱歉,删除了批处理文件标签,与此无关,如何连接到??抱歉,删除了批处理文件标签,与此无关,我已经尝试过了,意味着<代码>密钥保存= false < /代码>仍然相同的错误调用循环中的代码> DeleMeMeStEffice(< /代码>)方法,在每次迭代中考虑新对象吗?意思是我的代码是否正确?你的建议在某种程度上起了作用,但现在的问题是,例如:我有
36条
消息,它管理
4个块
,因此,当我循环每个块时,有时它会删除
15条
消息,有时
19
意味着它不会删除所有块。老实说,我并不是真的使用php——我只是在谷歌上搜索了一下
array\u chunk()
是如何工作的,似乎你做得不对。转储并检查$k、$entry\U chunk和$result的值应该可以帮助您确定为什么它仍然没有按您期望的方式工作。您可以将此问题提交给任何已知的人吗?在这个问题上,我也找不到任何帮助。令人困惑的是,在循环的时候,它会从第二个块中删除一些项目。我已经尝试过了,这意味着<代码>密钥保存= false <代码>。同样的错误调用循环中的<代码> DeleMeMeStAuthCuffe()/Case>方法,在每次迭代中考虑新对象吗?意思是我的代码是否正确?你的建议在某种程度上起了作用,但现在的问题是,例如:我有
36条
消息,它管理
4个块
,因此,当我循环每个块时,有时它会删除
15条
消息,有时
19
意味着它不会删除所有块。老实说,我并不是真的使用php——我只是在谷歌上搜索了一下
array\u chunk()
是如何工作的,似乎你做得不对。转储并检查$k、$entry\U chunk和$result的值应该可以帮助您确定为什么它仍然没有按您期望的方式工作。您可以将此问题提交给任何已知的人吗?在这个问题上,我也找不到任何帮助。令人困惑的是,有时它会在循环时从第二个块中删除一些项。