Connecting to SQS using C# | .NET Developers



In this blog I am going to give a brief knowledge on AWS SQS and how we can write C# code to access and use AWS SQS.

What is SQS ?

Amazon Simple Queue Service (SQS) is a managed message queuing service that enables to scale and decouple micro-services, distributed systems, and server less applications.

How SQS Works ?

SQS basically exposes an API to publish and consume messages. In SQS a single message will get delivered to single consumer only, even when lot of concurrent consumers are running. When a consumer receives a message, that particular moment it get blocked to be accessed by other consumers.


Explaining two scenarios -
  1. If we have SSO Login to AWS Console.
  2. If we have AWS account with IAM login.

1.  C# Code to connect with SQS when user have SSO Login -

  • Add References AWSSDK.Core, AWSSDK.SimpleNotificationService and  AWSSDK.SQS -
                       

  • Headers Used -
                using System;
                using Amazon;
                using Amazon.SQS;
                using Amazon.SQS.Model;

  • Code which will command SQS to create queue and store message, also helps us to fetch the message stored in it -
               


Complete Code -


using System;
using Amazon;
using Amazon.SQS;
using Amazon.SQS.Model;
namespace WindowsService1
{
    class CSahrp_to_SQS
    {
        public void happy()
        {
        }
        static void Main(String[] args)
        {
            Console.WriteLine("********************Amazon SQS******************");
            AmazonSQSClient sqs = new AmazonSQSClient(RegionEndpoint.USEast1);
            var sqsrequest = new CreateQueueRequest { QueueName = "Acknowledgement" };
            var createQueueResponse = sqs.CreateQueueAsync(sqsrequest).Result;
            var myQueueUrl = createQueueResponse.QueueUrl;
            var listQueuesRequest = new ListQueuesRequest();
            var listQueuesResponse = sqs.ListQueuesAsync(listQueuesRequest);
            Console.WriteLine("List of Amazon SQS");
            foreach (var queueUrl in listQueuesResponse.Result.QueueUrls)
            {
                Console.WriteLine($"QueuesUrl: ", queueUrl);
            }
            Console.ReadLine();
            var queueUrl = sqs.GetQueueUrlAsync("Acknowledgement").Result.QueueUrl;
            var recieveMessageRequest = new ReceiveMessageRequest
            {
                QueueUrl = "https://sqs.us-east-1.amazonaws.com/772486769836/ball"
            };
            var sendMessageResponse = sqs.SendMessage("https://sqs.us-east-1.amazonaws.com/772486769836/ball", "Message Sent");
            var recieveMessageResponse = sqs.ReceiveMessage(recieveMessageRequest);
            foreach (var message in recieveMessageResponse.Messages)
            {
                Console.WriteLine("Message \n");
                Console.WriteLine($"Mesaage Id: {message.MessageId} \n");
                Console.WriteLine($"Message Body: {message.Body} \n");
                Console.WriteLine(message);
            }
        }
    }
}


For any queries please comment below i will try to solve your queries.



Comments