Fix rabbitmq dropping connection
- Long tasks such as extracting text were blocking the mainthread thus we now proceed in a separate thread so the heartbeat can continue to be sent.
- If a message fails to be processed we send a "NACK" to ensure it is queued again and process later by another extraction worker