What async job queue do you recommend? Is it decoupled from your app server?
For the queue, I've wrapped redis and rabbitmq clients with a simple retry logic that re-enqueues the job on failure to send. It's about choosing what's right for your use case.