diff --git a/app/models/agents/mqtt_agent.rb b/app/models/agents/mqtt_agent.rb index bfb28bf6..e7a7985e 100644 --- a/app/models/agents/mqtt_agent.rb +++ b/app/models/agents/mqtt_agent.rb @@ -118,20 +118,22 @@ module Agents def check mqtt_client.connect do |c| + begin + Timeout.timeout((interpolated['max_read_time'].presence || 15).to_i) { + c.get(interpolated['topic']) do |topic, message| - Timeout::timeout((interpolated['max_read_time'].presence || 15).to_i) { - c.get(interpolated['topic']) do |topic, message| + # A lot of services generate JSON. Try that first + payload = JSON.parse(message) rescue message - # A lot of services generate JSON. Try that first - payload = JSON.parse(message) rescue message - - create_event :payload => { - 'topic' => topic, - 'message' => payload, - 'time' => Time.now.to_i - } - end - } rescue TimeoutError + create_event :payload => { + 'topic' => topic, + 'message' => payload, + 'time' => Time.now.to_i + } + end + } + rescue Timeout::Error + end c.disconnect end