[SOLVED] How to process data from AWS SQS?

Issue

I have a problem with understanding of working SQS from AWS in NodeJS. I’m creating a simple endpoint which receive data sended to my server and add to SQS queue:

export const receiveMessageFromSDK = async (req: Request, res: Response) => {
    const payload = req.body;

    try {
        await sqs.sendMessage({
            QueueUrl: process.env.SQS_QUEUE_URL,
            MessageBody: payload 
        }).promise();
    } catch (error) {
        //something else
    }
}

and ok, it working and MessageBody is adding to my SQS queue. And right now I have a problem with processing of the data from this queue… How to do this?

In Google Cloud I’m creating simple request queue with sending (in body payload) also url of endpoint which should process data from queue, then gcloud send to this endpoint this body and my server starting business logic on this data. But how to do this in SQS? How to receive data from this queue and start processing data on my side?

I’m thinking about QueueUrl param but in docs is written that this value should be an url from aws console like https://sqs.eu-central-1.amazonaws.com... so I have no idea how to process this data from queue on my side.

So…, can anybody help me?

Thanks, in advice for any help!

Solution

Should I call launch this function on cron or AWS can eq. send request on providing from me endpoint with this data etc

SQS is for pulling data, which means that you have to have a cron job working (or any equivalent system in your app) that iteratively pulls your queue for messages using receiveMessage, , e.g. every 10 seconds.

If you want push type messaging system, then you have to use SNS instead of SQS. SNS can push messages to your HTTP/HTTPS endpoint automatically if your application exposes any such endpoint for the messages.

Answered By – Marcin

Answer Checked By – Pedro (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *