We are using RabbitMQ as message queue, and Celery for task queues, and I am trying to wrap my head around queues.
Could somebody possibly explain the operational differences between a task queue and a message queue to me?
So far, I get that the message queue will be used for actual data, like a text message or log snippet. It is placed on the message queue so a worker can collect it and do something with it, be that parsing, storing etc.
The task queue portion confuses me, not sure why or when or what that would do?
I would think workers (AKA tasks?) would constantly be polling the message queue for things to do, so why is there a task queue?
Not quite, but close. The task queue in RabbitMQ is more akin to a task scheduler, like cron or Windows Task Scheduler.
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.