0
我正在使用写在Node.js中的服务通过MQTT(https://www.npmjs.com/package/mqtt)接收消息,然后写入数据库(使用mssql的SQL Server)。如何使用MQTT处理Node.js中的消息处理失败?
当一切正常工作时,这将工作得非常好,我创建了mqtt侦听器并订阅了新的消息事件。
但是,如果与数据库的连接失败(这可能会由于网络中断等原因而周期性发生),那么将消息写入数据库将失败,并且该消息将被丢弃。
我想告诉MQTT经纪人 - “我无法处理该消息,直到我可以将其保存在缓冲区中。”
var mqtt = require('mqtt')
var client = mqtt.connect('mymqttbroker')
client.on('connect', function() {
client.subscribe('messagequeue')
})
client.on('message', function (topic, message) {
writeMessageToDB(message).then((result) => {console.log('success'};).catch((err) => {/* What can I do here ?*/});
})
这是一个非常有用的方法,它可能是前进的方向! –
@TerryLennox只需要注意,如果命令或并发很重要,那么这种方法会导致问题... –
在这种情况下,命令并不重要,消息可能会按顺序到达DB层处理得很好。谢谢! –