SNS, SQS and Node.js
A simple Node.js example that publishes a message to a SNS topic, then consumes the message using a SQS queue.
Full source code (AWS Credentials omitted)
AWS Console Steps
- Set up SNS Topic
- Set up SQS Queue
- Set permissions on the Queue to allow the topic to publish to it
- Subscribe the Queue to the SNS Topic
- Set up IAM User and give the user access to SNS and SQS
- Create and download the IAM User credentials
// publish a message to an SNS topic
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sns = new AWS.SNS();
var params = {
TopicArn : "arn:your-topic-arn",
Message: "Hello World"
};
sns.publish(params, function(err, data) {
// published message
});
// consume a message from an SQS queue
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sqs = new AWS.SQS();
var queueUrl = "https://your-queue-url";
sqs.receiveMessage({
QueueUrl : queueUrl
},
function (err, data) {
if (data.Messages && data.Messages.length > 0) {
var message = data.Messages[0];
// TODO: process the message...
// Delete the message from the queue
var receiptHandle = message.ReceiptHandle;
sqs.deleteMessage({
QueueUrl: queueUrl,
ReceiptHandle: receiptHandle
},
function (err, data) {
// message deleted
}
);
}
});
// config.json to store AWS credentials for this example
{
"accessKeyId": "YOUR_ACCESS_KEY",
"secretAccessKey": "YOUR_SECRET_ACCESS_KEY",
"region": "eu-west-1"
}