Я не проверял это, но логика заключается в следующем. setTimeout устанавливается для закрытия соединения через 5 минут для каждого сообщения. Если приходит новое сообщение, старый таймер очищается новым сообщением, и новый таймер воссоздается. в противном случае соединение закрывается через 5 минут
const closeConnection = function () {
ch.close()
}
let timer = setTimeout(()=>{}, 0); //initial timer for cleartimeout Maybe refactor this?
ch.consume(receivingQueue, async function (msg) {
clearTimeout(timer);
timer = setTimeout(closeConnection, 300000)
if (msg !== null) {
console.log(msg.content.toString()));
}
});