diff --git a/main.go b/main.go
index edee1a5f4c6e35acc902ef5afe0da742cac66317..a7460036dc73f96ef6a9712fdb723552e232e265 100644
--- a/main.go
+++ b/main.go
@@ -6,6 +6,7 @@ import (
 
 	_ "github.com/joho/godotenv/autoload"
 	"jonasled.dev/jonasled/ems-esp-logger/log"
+	"jonasled.dev/jonasled/ems-esp-logger/messageworker"
 	"jonasled.dev/jonasled/ems-esp-logger/mqttclient"
 	"jonasled.dev/jonasled/ems-esp-logger/mqttserver"
 	"jonasled.dev/jonasled/ems-esp-logger/zeromq"
@@ -21,8 +22,9 @@ func main() {
 		mqttserver.Start()
 	}
 	mqttclient.Init()
+	go messageworker.Run()
 	for {
-		time.Sleep(time.Second)
+		time.Sleep(time.Second) // reduce CPU usage by adding a short sleep here instead of a empty for loop
 	}
 
 }
diff --git a/messageworker/main.go b/messageworker/main.go
new file mode 100644
index 0000000000000000000000000000000000000000..44334de4de516db08c847f755415877dab1f1202
--- /dev/null
+++ b/messageworker/main.go
@@ -0,0 +1,18 @@
+package messageworker
+
+import (
+	"fmt"
+	"os"
+
+	zmq "github.com/pebbe/zmq4"
+)
+
+func Run() {
+	worker, _ := zmq.NewSocket(zmq.PULL)
+	defer worker.Close()
+	worker.Connect(os.Getenv("ZEROMQ_WORKER"))
+	for {
+		task, _ := worker.Recv(0)
+		fmt.Println("Processing:", task)
+	}
+}