'Nodejs multiple sqs consumers for mulitple queues
i am trying to create two consumer for two different queues in a same js file using npm package sqs-consumers but my second consumer is not picking up messages from the queue whereas the first one is working fine.
Kindly advise what is the correct way to handle multiple consumers for multiple queues correctly?
let queueUrl;
if (process.env.NODE_ENV == "development") {
queueUrl = `Qurl0`;// Setup the receiveMessage parameters
}
if (process.env.NODE_ENV == "production") {
queueUrl = `Qurl0`;// Setup the receiveMessage parameters
}
if (process.env.NODE_ENV == "production" || process.env.NODE_ENV == "development") {
console.log("Queue url", queueUrl)
const app = Consumer.create({
queueUrl: queueUrl,
VisibilityTimeout: 20,
WaitTimeSeconds: 20,
handleMessage: async (message) => {
let mess
if (message.Body) {
mess = JSON.parse(message.Body)
} else {
mess = JSON.parse(message)
}
console.log("@@@@@@@@@@@@aaaaaaa", mess)
if (mess && !mess.shareUrls) {
await doSomething()
await doSomething()
} else {
doSomething()
}
},
});
app.on('error', (err) => {
console.log("Error in sqs", err.message);
});
app.on('message_processed', (message) => {
// console.log("message_processed in processing sqs", message);
});
app.start();
console.log('consumer app-',app)
}
let copyToAllQueueUrl;
if (process.env.NODE_ENV == "development") {
copyToAllQueueUrl = `Qurl`;
}
if (process.env.NODE_ENV == "production") {
copyToAllQueueUrl = `Qurl`;
}
if (process.env.NODE_ENV == "production" || process.env.NODE_ENV == "development") {
console.log("Queue url", copyToAllQueueUrl)
const app2 = Consumer.create({
queueUrl: copyToAllQueueUrl,
VisibilityTimeout: 20,
WaitTimeSeconds: 20,
handleMessage: async (message) => {
let mess
if (message.Body) {
mess = JSON.parse(message.Body)
} else {
mess = JSON.parse(message)
}
console.log("@@@@@@@@@@@@copyTtAll", mess)
let {_id, answerType, updates, options, memberSession } = mess;
doMYFXN(mess)
},
});
app2.on('error', (err) => {
console.log("Error in sqs", err.message);
});
app2.on('message_processed', (message) => {
console.log("message_processed in processing sqs app2", message);
});
app2.start();
console.log('consumer app2-',app2)
}`
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
