awsアプリケーションのためにnode.jsで書かれたコードがあります。私はJavaとPythonに精通していますが、javascriptには慣れていません。awsのwhileループでメッセージを受信して削除します
メッセージがキューに残っているかどうかを確認する必要があります。その場合は、処理して削除する必要があります。しかし、限り、私はwhileループが私のキュープロセスを待つことなく、ちょうど実行することを理解します。しばらくすると、それは私の記憶を使い果たします。
私はforループでそれをしても問題はありませんが、whileループでこれを行う必要がありますので、whileループを使用する方法はありますか?
message_count = true;
while (message_count === true)
{
queue.getQueueAttributes(params_queue, function (err, data)
{
if (err)
console.log(err, err.stack);
else
console.log(data);
if (data.Attributes.ApproximateNumberOfMessages == "0")
{
message_count = false;
}
queue.receiveMessage(function (err, data)
{
if (data)
{
message = data.Messages[0].Body
receipthandle = data.Messages[0].ReceiptHandle;
params.ReceiptHandle = receipthandle
queue.deleteMessage(params, function (err, data)
{
if (err)
console.log(err, err.stack);
else
console.log(data);
});
}
});
});
}
あなたはそれがためのループの問題ではありませんか、明確にすることはできますか?あなたはwhileループを使っています..何を変更したいのですか? – Shibashis
このwhileループは何らかの形で動作しません(すべてのキュー部分をスキップしてtrueの間に実行されます)。forループを使用してエンドポイントとしてメッセージ番号を設定すると、必要なすべてのメッセージが表示されます。私が見ているすべての投稿は、ループを再帰的またはforループに変更することを示唆しています。 – mehmet
キューには何もメッセージがありませんか?ある時点でメッセージの消費を再開したくないのですか? – Shibashis