refactor dispatcher to use RabbitMQ taskQueue, and use separate worker processes for processing the queue