I currently use Gearman to communicate with workers. It has a nice property that requests are retried when a worker/recipient dies, and are deleted from the queue, if a client/sender dies.
This way a microservice can die and restart and no tasks are lost.
Is it possible to simulate a task queue using MQTT? Celery does that over AMQP.