開発中に、Amazon SQS で偽のメッセージを大量に生成しています。すべてのメッセージを削除する小さなアプリを作成しようとしていました (開発中に頻繁に行うことです)。キューをパージするツールを知っている人はいますか?
17522 次
9 に答える
48
スクリプトを書いたり、キューを削除したくない場合。キューの構成を変更できます。
- キューを右クリック >
configure queue
Message Retention period
1 分 (設定可能な最小時間) に変更します。- すべてのメッセージが消えるまでしばらくお待ちください。
この方法は、キューを削除せずにキュー内のすべてのメッセージを削除するのにうまく機能することがわかりました。
于 2013-03-18T23:29:28.713 に答える
10
2014 年 12 月の時点で、sqs コンソールのキュー アクション メニューにパージ キュー オプションが追加されました。
于 2014-12-17T17:53:38.640 に答える
8
ここに来て、C# で SQS メッセージをまとめて削除する方法を探している人のために...
//C# Console app which deletes all messages from a specified queue
//AWS .NET library required.
using System;
using System.Net;
using System.Configuration;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Text;
using Amazon;
using Amazon.SQS;
using Amazon.SQS.Model;
using System.Timers;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Diagnostics;
namespace QueueDeleter
{
class Program
{
public static System.Timers.Timer myTimer;
static NameValueCollection appConfig = ConfigurationManager.AppSettings;
static string accessKeyID = appConfig["AWSAccessKey"];
static string secretAccessKeyID = appConfig["AWSSecretKey"];
static private AmazonSQS sqs;
static string myQueueUrl = "https://queue.amazonaws.com/1640634564530223/myQueueUrl";
public static String messageReceiptHandle;
public static void Main(string[] args)
{
sqs = AWSClientFactory.CreateAmazonSQSClient(accessKeyID, secretAccessKeyID);
myTimer = new System.Timers.Timer();
myTimer.Interval = 10;
myTimer.Elapsed += new ElapsedEventHandler(checkQueue);
myTimer.AutoReset = true;
myTimer.Start();
Console.Read();
}
static void checkQueue(object source, ElapsedEventArgs e)
{
myTimer.Stop();
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
receiveMessageRequest.QueueUrl = myQueueUrl;
ReceiveMessageResponse receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);
if (receiveMessageResponse.IsSetReceiveMessageResult())
{
ReceiveMessageResult receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
if (receiveMessageResult.Message.Count < 1)
{
Console.WriteLine("Can't find any visible messages.");
myTimer.Start();
return;
}
foreach (Message message in receiveMessageResult.Message)
{
Console.WriteLine("Printing received message.\n");
messageReceiptHandle = message.ReceiptHandle;
Console.WriteLine("Message Body:");
if (message.IsSetBody())
{
Console.WriteLine(" Body: {0}", message.Body);
}
sqs.DeleteMessage(new DeleteMessageRequest().WithQueueUrl(myQueueUrl).WithReceiptHandle(messageReceiptHandle));
}
}
else
{
Console.WriteLine("No new messages.");
}
myTimer.Start();
}
}
}
于 2011-10-20T11:42:27.827 に答える
5
キューの最初のアイテムを確認します。キューの最後のアイテムまでスクロールします。Shift キーを押しながらアイテムをクリックします。すべてが選択されます。
于 2014-04-21T15:35:29.587 に答える
4
キューを削除して再度作成するのが最善の方法だと思います.2つのリクエストだけです.
于 2011-12-12T12:11:58.907 に答える