前提・実現したいこと
AWSSQSから受信したメッセージを AWS Lambda で受信後、AWSSQSに対してメッセージを送信する処理をnode.jsを使用し作成しております。
LambdaからSQSへの疎通は確認できている状態なのですが、
メッセージが2重登録される不具合が発生しており、解消方法をご教授いただければと思います。
該当のソースコード
Lambdaのハンドラ関数(開始 async 宣言で非同期)
受信したメッセージ毎のループ(開始)
const 戻り値=本処理------★
受信したメッセージ毎のループ(狩猟)
Lambdaのハンドラ関数(終了)
★本処理 (開始 async宣言で非同期)
DB取得処理
DB取得結果を受けてのループ(開始)
取得結果を受けてSQSパラメータを構築する処理
AWS-SDKを使用してSQSへメッセージを送信する処理-------★★
DB取得結果を受けてのループ(終了)
本処理(終了)
★★sqsメッセージ送信処理 ▼
const AWS = require('aws-sdk');
const sqs = new AWS.SQS({apiVersion: '2012-11-05',<エンドポイントURL>});
module.exports.sqsSendMessage = async function(messageBody){
var params = {
QueueUrl: global.sqsReqestUrl,
// DelaySeconds:5,
MessageBody:JSON.stringify(messageBody)
}
console.log(1);
let res = await sqs.sendMessage(params,function(err,data){
console.trace();
if (err){
console.log(err,err.stack);
throw new Error();
//return false;
}else{
console.log(2);
console.log(data);
//return true;
}
}).promise();
console.log('res =' + res);
console.log(3);
}
★★sqsメッセージ送信処理 ▲
言語名
node.js 12系
コンソール出力より
aws-sdkのsendMessage関数のコールバックのみが2回呼び出されていることがわかりましたが、
sdkの中で行っていることなので、回避の手段がわかりません。
あなたの回答
tips
プレビュー