2017-02-15 4 views
0

У меня есть MQTT клиента получать темы и сообщения, как показано нижекак обрабатывать большие данные суммы, полученной от клиента MQTT

client.on('message', function (topic, message) {//this function is executed every 2s 
    let msg = message.toString(); 
    processMessage(message);//this takes long time 
}) 

client.on будет называться каждые 1 секунды, что зависит от другого MQTT -client, которые публикуют сообщение mqtt.

ProcessMessage() может занять около 2 секунд, чтобы обработать (I/O и операцию DB)

Если я оставить это так, то это вызовет проблемы. Можете ли вы, ребята, указать мне правильный способ справиться с этим делом?

например. использовать MemeCache Чтобы быстро кэшировать полученные данные? , например. использовать многопоточность?

Заранее спасибо

+0

Является ли это периодическим или непрерывным? Если он непрерывный, тогда с данными, поступающими с удвоенной скоростью, он может быть обработан, тогда он всегда будет взорвать систему – hardillb

ответ

0

Если вы можете распараллелить ProcessMessage, то да, 2 параллельных нить со средним временем обработки 2-х секунд должна быть в состоянии обрабатывать сообщений скорости прибытия 1/второй.

2 секунды время обработки кажется мне длинным, даже для операций ввода-вывода и БД, , поэтому я бы посмотрел там первым.

Смежные вопросы