쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Amazon SQS 대기열 업데이트

포커스 모드
Amazon SQS 대기열 업데이트 - SDK for .NET (버전 3)

의 버전 4(V4) SDK for .NET 는 미리 보기 상태입니다. 미리 보기에서이 새 버전에 대한 정보를 보려면 AWS SDK for .NET (버전 4 미리 보기) 개발자 안내서를 참조하세요.

SDK의 V4는 미리 보기 상태이므로 콘텐츠는 변경될 수 있습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

의 버전 4(V4) SDK for .NET 는 미리 보기 상태입니다. 미리 보기에서이 새 버전에 대한 정보를 보려면 AWS SDK for .NET (버전 4 미리 보기) 개발자 안내서를 참조하세요.

SDK의 V4는 미리 보기 상태이므로 콘텐츠는 변경될 수 있습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

이 예제에서는를 사용하여 Amazon SQS 대기열 SDK for .NET 을 업데이트하는 방법을 보여줍니다. 일부 점검 후 애플리케이션은 지정된 속성을 지정된 값으로 업데이트한 다음 대기열의 모든 속성을 표시합니다.

명령줄 인수에 대기열 URL만 포함된 경우 애플리케이션에서는 단순히 대기열의 모든 속성을 표시합니다.

다음 섹션에서는 이 예제의 코드 조각을 제공합니다. 예제의 전체 코드는 그 뒤에 표시되며, 그대로 빌드하고 실행할 수 있습니다.

대기열 속성 표시

다음 코드 조각은 지정된 대기열 URL로 식별되는 대기열의 속성을 보여줍니다.

이 주제의 끝 부분에 있는 예제에서는 사용 중인 이 코드 조각을 보여줍니다.

// // Method to show all attributes of a queue private static async Task ShowAllAttributes(IAmazonSQS sqsClient, string qUrl) { GetQueueAttributesResponse responseGetAtt = await sqsClient.GetQueueAttributesAsync(qUrl, new List<string>{ QueueAttributeName.All }); Console.WriteLine($"Queue: {qUrl}"); foreach(var att in responseGetAtt.Attributes) Console.WriteLine($"\t{att.Key}: {att.Value}"); }

속성 이름 검증

다음 코드 조각은 업데이트 중인 속성의 이름을 검증합니다.

이 주제의 끝 부분에 있는 예제에서는 사용 중인 이 코드 조각을 보여줍니다.

// // Method to check the name of the attribute private static bool ValidAttribute(string attribute) { var attOk = false; var qAttNameType = typeof(QueueAttributeName); List<string> qAttNamefields = new List<string>(); foreach(var field in qAttNameType.GetFields()) qAttNamefields.Add(field.Name); foreach(var name in qAttNamefields) if(attribute == name) { attOk = true; break; } return attOk; }

대기열 속성 업데이트

다음 코드 조각은 지정된 대기열 URL로 식별되는 대기열의 속성을 업데이트합니다.

이 주제의 끝 부분에 있는 예제에서는 사용 중인 이 코드 조각을 보여줍니다.

// // Method to update a queue attribute private static async Task UpdateAttribute( IAmazonSQS sqsClient, string qUrl, string attribute, string value) { await sqsClient.SetQueueAttributesAsync(qUrl, new Dictionary<string, string>{{attribute, value}}); }

전체 코드

이 섹션에는 이 예제에 대한 관련 참조와 전체 코드가 나와 있습니다.

NuGet 패키지:

프로그래밍 요소:

NuGet 패키지:

프로그래밍 요소:

using System; using System.Collections.Generic; using System.Threading.Tasks; using Amazon.SQS; using Amazon.SQS.Model; namespace SQSUpdateQueue { // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = // Class to update a queue class Program { private const int MaxArgs = 3; private const int InvalidArgCount = 2; static async Task Main(string[] args) { // Parse the command line and show help if necessary var parsedArgs = CommandLine.Parse(args); if(parsedArgs.Count == 0) { PrintHelp(); return; } if((parsedArgs.Count > MaxArgs) || (parsedArgs.Count == InvalidArgCount)) CommandLine.ErrorExit("\nThe number of command-line arguments is incorrect." + "\nRun the command with no arguments to see help."); // Get the application arguments from the parsed list var qUrl = CommandLine.GetArgument(parsedArgs, null, "-q"); var attribute = CommandLine.GetArgument(parsedArgs, null, "-a"); var value = CommandLine.GetArgument(parsedArgs, null, "-v", "--value"); if(string.IsNullOrEmpty(qUrl)) CommandLine.ErrorExit("\nYou must supply at least a queue URL." + "\nRun the command with no arguments to see help."); // Create the Amazon SQS client var sqsClient = new AmazonSQSClient(); // In the case of one command-line argument, just show the attributes for the queue if(parsedArgs.Count == 1) await ShowAllAttributes(sqsClient, qUrl); // Otherwise, attempt to update the given queue attribute with the given value else { // Check to see if the attribute is valid if(ValidAttribute(attribute)) { // Perform the update and then show all the attributes of the queue await UpdateAttribute(sqsClient, qUrl, attribute, value); await ShowAllAttributes(sqsClient, qUrl); } else { Console.WriteLine($"\nThe given attribute name, {attribute}, isn't valid."); } } } // // Method to show all attributes of a queue private static async Task ShowAllAttributes(IAmazonSQS sqsClient, string qUrl) { GetQueueAttributesResponse responseGetAtt = await sqsClient.GetQueueAttributesAsync(qUrl, new List<string>{ QueueAttributeName.All }); Console.WriteLine($"Queue: {qUrl}"); foreach(var att in responseGetAtt.Attributes) Console.WriteLine($"\t{att.Key}: {att.Value}"); } // // Method to check the name of the attribute private static bool ValidAttribute(string attribute) { var attOk = false; var qAttNameType = typeof(QueueAttributeName); List<string> qAttNamefields = new List<string>(); foreach(var field in qAttNameType.GetFields()) qAttNamefields.Add(field.Name); foreach(var name in qAttNamefields) if(attribute == name) { attOk = true; break; } return attOk; } // // Method to update a queue attribute private static async Task UpdateAttribute( IAmazonSQS sqsClient, string qUrl, string attribute, string value) { await sqsClient.SetQueueAttributesAsync(qUrl, new Dictionary<string, string>{{attribute, value}}); } // // Command-line help private static void PrintHelp() { Console.WriteLine("\nUsage: SQSUpdateQueue -q queue_url [-a attribute -v value]"); Console.WriteLine(" -q: The URL of the queue you want to update."); Console.WriteLine(" -a: The name of the attribute to update."); Console.WriteLine(" -v, --value: The value to assign to the attribute."); } } // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = // Class that represents a command line on the console or terminal. // (This is the same for all examples. When you have seen it once, you can ignore it.) static class CommandLine { // // Method to parse a command line of the form: "--key value" or "-k value". // // Parameters: // - args: The command-line arguments passed into the application by the system. // // Returns: // A Dictionary with string Keys and Values. // // If a key is found without a matching value, Dictionary.Value is set to the key // (including the dashes). // If a value is found without a matching key, Dictionary.Key is set to "--NoKeyN", // where "N" represents sequential numbers. public static Dictionary<string,string> Parse(string[] args) { var parsedArgs = new Dictionary<string,string>(); int i = 0, n = 0; while(i < args.Length) { // If the first argument in this iteration starts with a dash it's an option. if(args[i].StartsWith("-")) { var key = args[i++]; var value = key; // Check to see if there's a value that goes with this option? if((i < args.Length) && (!args[i].StartsWith("-"))) value = args[i++]; parsedArgs.Add(key, value); } // If the first argument in this iteration doesn't start with a dash, it's a value else { parsedArgs.Add("--NoKey" + n.ToString(), args[i++]); n++; } } return parsedArgs; } // // Method to get an argument from the parsed command-line arguments // // Parameters: // - parsedArgs: The Dictionary object returned from the Parse() method (shown above). // - defaultValue: The default string to return if the specified key isn't in parsedArgs. // - keys: An array of keys to look for in parsedArgs. public static string GetArgument( Dictionary<string,string> parsedArgs, string defaultReturn, params string[] keys) { string retval = null; foreach(var key in keys) if(parsedArgs.TryGetValue(key, out retval)) break; return retval ?? defaultReturn; } // // Method to exit the application with an error. public static void ErrorExit(string msg, int code=1) { Console.WriteLine("\nError"); Console.WriteLine(msg); Environment.Exit(code); } } }

using System; using System.Collections.Generic; using System.Threading.Tasks; using Amazon.SQS; using Amazon.SQS.Model; namespace SQSUpdateQueue { // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = // Class to update a queue class Program { private const int MaxArgs = 3; private const int InvalidArgCount = 2; static async Task Main(string[] args) { // Parse the command line and show help if necessary var parsedArgs = CommandLine.Parse(args); if(parsedArgs.Count == 0) { PrintHelp(); return; } if((parsedArgs.Count > MaxArgs) || (parsedArgs.Count == InvalidArgCount)) CommandLine.ErrorExit("\nThe number of command-line arguments is incorrect." + "\nRun the command with no arguments to see help."); // Get the application arguments from the parsed list var qUrl = CommandLine.GetArgument(parsedArgs, null, "-q"); var attribute = CommandLine.GetArgument(parsedArgs, null, "-a"); var value = CommandLine.GetArgument(parsedArgs, null, "-v", "--value"); if(string.IsNullOrEmpty(qUrl)) CommandLine.ErrorExit("\nYou must supply at least a queue URL." + "\nRun the command with no arguments to see help."); // Create the Amazon SQS client var sqsClient = new AmazonSQSClient(); // In the case of one command-line argument, just show the attributes for the queue if(parsedArgs.Count == 1) await ShowAllAttributes(sqsClient, qUrl); // Otherwise, attempt to update the given queue attribute with the given value else { // Check to see if the attribute is valid if(ValidAttribute(attribute)) { // Perform the update and then show all the attributes of the queue await UpdateAttribute(sqsClient, qUrl, attribute, value); await ShowAllAttributes(sqsClient, qUrl); } else { Console.WriteLine($"\nThe given attribute name, {attribute}, isn't valid."); } } } // // Method to show all attributes of a queue private static async Task ShowAllAttributes(IAmazonSQS sqsClient, string qUrl) { GetQueueAttributesResponse responseGetAtt = await sqsClient.GetQueueAttributesAsync(qUrl, new List<string>{ QueueAttributeName.All }); Console.WriteLine($"Queue: {qUrl}"); foreach(var att in responseGetAtt.Attributes) Console.WriteLine($"\t{att.Key}: {att.Value}"); } // // Method to check the name of the attribute private static bool ValidAttribute(string attribute) { var attOk = false; var qAttNameType = typeof(QueueAttributeName); List<string> qAttNamefields = new List<string>(); foreach(var field in qAttNameType.GetFields()) qAttNamefields.Add(field.Name); foreach(var name in qAttNamefields) if(attribute == name) { attOk = true; break; } return attOk; } // // Method to update a queue attribute private static async Task UpdateAttribute( IAmazonSQS sqsClient, string qUrl, string attribute, string value) { await sqsClient.SetQueueAttributesAsync(qUrl, new Dictionary<string, string>{{attribute, value}}); } // // Command-line help private static void PrintHelp() { Console.WriteLine("\nUsage: SQSUpdateQueue -q queue_url [-a attribute -v value]"); Console.WriteLine(" -q: The URL of the queue you want to update."); Console.WriteLine(" -a: The name of the attribute to update."); Console.WriteLine(" -v, --value: The value to assign to the attribute."); } } // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = // Class that represents a command line on the console or terminal. // (This is the same for all examples. When you have seen it once, you can ignore it.) static class CommandLine { // // Method to parse a command line of the form: "--key value" or "-k value". // // Parameters: // - args: The command-line arguments passed into the application by the system. // // Returns: // A Dictionary with string Keys and Values. // // If a key is found without a matching value, Dictionary.Value is set to the key // (including the dashes). // If a value is found without a matching key, Dictionary.Key is set to "--NoKeyN", // where "N" represents sequential numbers. public static Dictionary<string,string> Parse(string[] args) { var parsedArgs = new Dictionary<string,string>(); int i = 0, n = 0; while(i < args.Length) { // If the first argument in this iteration starts with a dash it's an option. if(args[i].StartsWith("-")) { var key = args[i++]; var value = key; // Check to see if there's a value that goes with this option? if((i < args.Length) && (!args[i].StartsWith("-"))) value = args[i++]; parsedArgs.Add(key, value); } // If the first argument in this iteration doesn't start with a dash, it's a value else { parsedArgs.Add("--NoKey" + n.ToString(), args[i++]); n++; } } return parsedArgs; } // // Method to get an argument from the parsed command-line arguments // // Parameters: // - parsedArgs: The Dictionary object returned from the Parse() method (shown above). // - defaultValue: The default string to return if the specified key isn't in parsedArgs. // - keys: An array of keys to look for in parsedArgs. public static string GetArgument( Dictionary<string,string> parsedArgs, string defaultReturn, params string[] keys) { string retval = null; foreach(var key in keys) if(parsedArgs.TryGetValue(key, out retval)) break; return retval ?? defaultReturn; } // // Method to exit the application with an error. public static void ErrorExit(string msg, int code=1) { Console.WriteLine("\nError"); Console.WriteLine(msg); Environment.Exit(code); } } }

추가 고려 사항

  • RedrivePolicy 속성을 업데이트하려면 운영 체제에 맞게 전체 값을 인용하고 키/값 페어의 따옴표는 이스케이프 처리해야 합니다.

    예를 들어 Windows에서는 값이 다음과 비슷한 방식으로 구성됩니다.

    "{\"deadLetterTargetArn\":\"DEAD_LETTER-QUEUE-ARN\",\"maxReceiveCount\":\"10\"}"
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.