sqs timeout 예제
AWS SQS (Simple Queue Service)는 분산된 메시지 채널로서, 애플리케이션 간의 비동기 통신을 지원합니다. 이 서비스를 사용하면 메시지 큐에 메시지를 보내고, 해당 메시지를 처리하는 워커 애플리케이션을 작성할 수 있습니다.
SQS는 메시지를 처리하는 시간 제한을 설정할 수 있는데, 이를 통해 긴 처리 시간이 걸리는 작업이나 블로킹 작업을 방지할 수 있습니다. 이러한 시간 제한은 “Visibility Timeout”이라고도 불리며, 기본적으로 메시지가 처리 중인 동안 다른 워커가 같은 메시지를 처리하지 못하도록 유지해줍니다.
아래 예제는 Node.js를 사용하여 SQS 시간 초과(timeout) 설정하는 방법을 보여줍니다.
const { Consumer } = require('sqs-consumer');
const app = Consumer.create({
queueUrl: 'AWS_SQS_QUEUE_URL',
handleMessage: async (message) => {
// 메시지 처리 로직 작성
// 예상 처리 시간이 긴 경우, 시간 초과 설정
if (message.length > 10) {
throw new Error('Too Long Execution Time');
}
},
sqs: new AWS.SQS(),
attributeNames: ['All'],
messageAttributeNames: ['All'],
pollingWaitTimeMs: 5000,
visibilityTimeout: 60 // 시간 초과를 60초로 설정
});
app.start();
위의 예제에서 visibilityTimeout
은 시간 초과를 설정하는 부분입니다. 위의 코드에서는 60초로 설정되어 있으며, 이는 메시지를 처리하는데 최대 60초까지 허용된다는 의미입니다.
시간 초과 설정은 각 메시지마다 적용되며, 처리 시간이 초과되면 메시지는 자동으로 대기열에 다시 들어가게 됩니다. 따라서 이를 통해 처리 속도에 맞춰 작업을 조절하고, 워커 애플리케이션의 안정성을 유지할 수 있습니다.
#AWS #SQS #timeout