What's the difference between a task queue and a message queue in RabbitMQ?

Solution 1:

Not quite, but close. The task queue in RabbitMQ is more akin to a task scheduler, like cron or Windows Task Scheduler.

The main idea behind Work Queues (aka: Task Queues) is to avoid doing a resource-intensive task immediately and having to wait for it to complete. Instead we schedule the task to be done later. We encapsulate a task as a message and send it to the queue. A worker process running in the background will pop the tasks and eventually execute the job. When you run many workers the tasks will be shared between them.

RabbitMQ is a message broker, hence the terminology. So operationally, functionally, there's really not much difference. One is for messages, the other is for tasks/jobs. The only real difference would be that messages are generally intended to processed (and therefore cleared out of the queue) as quickly as possible, whereas tasks are generally scheduled for a specific time, and therefore stay "queued" for a while. That's probably not a difference you'll have to worry about too much in the context of systems administration, though.