0

Amazon SQS キューにメッセージを一覧表示し、一度に 1 つずつ削除するオプションがあります。メッセージを削除すると、SUCCESS メッセージが返されます。ただし、メッセージは 1 つも削除されず、すべてキューに戻されます。

リスト キューのコードは次のとおりです。

<?php
include_once("sdk.class.php");

// Instantiate
$sqs = new AmazonSQS();
$rows = $sqs->get_queue_size('https://sqs.us-east-1.amazonaws.com/199992002821/SomeQueueSQS');

echo "<table>";
echo "<tr>";
echo "<td width=20 valign=top bgcolor=" . $adHeading . " align=left><strong>No</strong></td>";
echo "<td width=200 valign=top bgcolor=" . $adHeading . " align=left><strong>Message</strong></td>";
echo "<td width=50 align='right' bgcolor=" . $adHeading . "><a href='sqs.php'><img src='images/icon_refresh.png' border='0'></a></td>";
echo "</tr>";

for ($j = 0; $j < $rows; ++$j)
  {

    // Get Message
    $response = $sqs->receive_message('https://sqs.us-east-1.amazonaws.com/199992002821/SomeQueueSQS', array(
  'VisibilityTimeout' => 30
));
$body = $response->body->ReceiveMessageResult->Message[0]->Body;
$rcpt_hand=($response->body->ReceiveMessageResult->Message[0]->ReceiptHandle);

    $id = $j + 1;

    echo "<tr>";
    echo "<td valign=top bgcolor=" . $bgcolor . ">$id</td>";
    echo "<td valign=top bgcolor=" . $bgcolor . ">$body</td>";
    echo "<td valign=top><a href=sqsdelete.php?sid=$rcpt_hand><img   src=images/icon_delete.gif border=0 width=18 height=18></a></td>";
    echo "</tr>";

  }

echo "</table>";
?>

削除コードは次のとおりです。

<?php

if ($response = $sqs->delete_message('https://sqs.us-east-1.amazonaws.com/199992002821/SomeQueueSQS', $rcpt_hand)) {
  echo "Message deleted<br>";
} else {
  echo "Message not deleted<br>";
}

// Get list of unprocessed and valid messages
$rows = $sqs->get_queue_size('https://sqs.us-east-1.amazonaws.com/199992002821/SomeQueueSQS');

echo "<table>";
etc...

ありがとう

アンドレ

4

1 に答える 1

1

削除コードのif()条件が間違っています。条件は常にtrue を返します。

リクエストを作成してから、 か かを確認する必要が$response->isOK()ありtrueますfalse。リクエストが正常に完了すると、AWS は2xxステータス コードを返し、isOK()メソッドは を返しtrueます。

その変更を行って失敗が見られるようになった場合は、 を使用print_r($response->body)して、SQS が送り返すエラー メッセージを表示します。それはデバッグに役立つはずです。

于 2012-10-05T08:36:50.397 に答える