diff --git a/messageworker/main.go b/messageworker/main.go
index 3b0cebb7be6a24da9449a41cda5e56ff58b23402..02d812587147680735fb8978a376f149554e6234 100644
--- a/messageworker/main.go
+++ b/messageworker/main.go
@@ -20,43 +20,45 @@ func Run() {
continue
}
log.Log.Debug("Received new task: ", taskData)
- var task types.Task
- err = json.Unmarshal([]byte(taskData), &task)
- if err != nil {
- log.Log.Error("Failed decoding task as JSON: ", err.Error())
- return
- }
- var instance tables.Instance
- err = database.Db.Where("name = ?", task.Instance).First(&instance).Error
- if err != nil {
- log.Log.Error("Failed retreiving instance from database, pushing task back to queue: ", err.Error())
- queue.MainQueue.Enqueue(taskData, 60)
- return
- }
+ go func() {
+ var task types.Task
+ err = json.Unmarshal([]byte(taskData), &task)
+ if err != nil {
+ log.Log.Error("Failed decoding task as JSON: ", err.Error())
+ return
+ }
+ var instance tables.Instance
+ err = database.Db.Where("name = ?", task.Instance).First(&instance).Error
+ if err != nil {
+ log.Log.Error("Failed retreiving instance from database, pushing task back to queue: ", err.Error())
+ queue.MainQueue.Enqueue(taskData, 60)
+ return
+ }
- var jsonData map[string]interface{}
- err = json.Unmarshal([]byte(task.Data), &jsonData)
- if err != nil {
- log.Log.Error("Failed decoding boiler JSON: ", err.Error())
- queue.MainQueue.Enqueue(taskData, 60)
- return
- }
- valuesToInsert := []tables.Value{}
- for key, value := range jsonData {
- valueType := database.GetOrCreateValueType(key)
- dbValue := tables.Value{
- Date: task.Date,
- ValueType: valueType,
- Value: helper.AnyToString(value),
- Instance: instance,
+ var jsonData map[string]interface{}
+ err = json.Unmarshal([]byte(task.Data), &jsonData)
+ if err != nil {
+ log.Log.Error("Failed decoding boiler JSON: ", err.Error())
+ queue.MainQueue.Enqueue(taskData, 60)
+ return
}
- valuesToInsert = append(valuesToInsert, dbValue)
- }
- database.Db.Create(&valuesToInsert)
- err = queue.MainQueue.MarkDone(taskId)
- if err != nil {
- log.Log.Error("Failed marking element in queue as done: ", err.Error())
- }
- log.Log.Info("Stored boiler data in database")
+ valuesToInsert := []tables.Value{}
+ for key, value := range jsonData {
+ valueType := database.GetOrCreateValueType(key)
+ dbValue := tables.Value{
+ Date: task.Date,
+ ValueType: valueType,
+ Value: helper.AnyToString(value),
+ Instance: instance,
+ }
+ valuesToInsert = append(valuesToInsert, dbValue)
+ }
+ database.Db.Create(&valuesToInsert)
+ err = queue.MainQueue.MarkDone(taskId)
+ if err != nil {
+ log.Log.Error("Failed marking element in queue as done: ", err.Error())
+ }
+ log.Log.Info("Stored boiler data in database")
+ }()
}
}