Хотя вариант Kafka звучит интересно, было много работы по инфраструктуре на платформе, с которой я не знаком, поэтому я решил пойти с чем-то немного ближе к дому для меня, отправив сообщение MQTT на небольшой стенд приложение, позволяющее серверу MQTT отслеживать сообщения на предмет уникальности.
siteStream.on("change", async change => {
console.log("in site change stream);
const mqttClient = mqtt.connect("mqtt://localhost:1883");
const id = JSON.stringify(change._id._data);
// You'll want to push more than just the change stream id obviously...
mqttClient.on("connect", function() {
mqttClient.publish("myTopic", id);
mqttClient.end();
});
});
Я все еще работаю над окончательной версией сервера MQTT, но метод оценки уникальности сообщений, вероятно, будет хранить массив идентификаторов потоков изменений в памяти приложения, поскольку нет необходимости сохранять их и оценивать, продолжить работу в зависимости от того, был ли ранее виден этот идентификатор потока изменений.
var mqtt = require("mqtt");
var client = mqtt.connect("mqtt://localhost:1883");
var seen = [];
client.on("connect", function() {
client.subscribe("myTopic");
});
client.on("message", function(topic, message) {
context = message.toString().replace(/"/g, "");
if (seen.indexOf(context) < 0) {
seen.push(context);
// Do stuff
}
});
Это не относится к безопасности и т. Д., Но вы поняли.