diff --git a/internal/usecases/consume/handlemessage.go b/internal/usecases/consume/handlemessage.go
index f751492b0b01005db7c5b2e7251380733ac83f32..fd6977cb64faa20c60c720f58022e92f713d7012 100644
--- a/internal/usecases/consume/handlemessage.go
+++ b/internal/usecases/consume/handlemessage.go
@@ -25,13 +25,6 @@ HandleMessage gets called when a message is received
 */
 func (s *Service) HandleMessage(msg *broker.Message) {
 
-	// Defer a panic intercepting function
-	defer func() {
-		if err := recover(); err != nil {
-			log.Printf("PANIC: %e", err.(error))
-		}
-	}()
-
 	// Grab the headers from the message
 	sessionID, clientID, queryID, err := getHeaders(&msg.Headers)
 	if err != nil {
@@ -40,6 +33,15 @@ func (s *Service) HandleMessage(msg *broker.Message) {
 	}
 	s.publishStatus("Received", sessionID, queryID)
 
+	// Defer a panic intercepting function
+	defer func(sessionID, queryID *string) {
+		if err := recover(); err != nil {
+			log.Printf("PANIC: %e", err.(error))
+
+			s.publishStatus("Critical Error", sessionID, queryID)
+		}
+	}(sessionID, queryID)
+
 	// Unmarshall the incoming message into an IncomingJSONQuery object
 	JSONQuery, err := query.UnmarshalJSON(&msg.Body)
 	if err != nil {