I’ve been playing around with beanstalkd and some simple workers and want to implement it in one of my company’s application which is basically nothing more than a newsletter application but which has multiple instances with different databases per client on a single server.

Would it be better to run separate workers per client / database, each having their own queue/tube to work with, or a single worker that just uses one tube and is able to switch databases depending on some form of client ID or database ID in the message ?

I first thought running a single worker through a list of tubes, one per client, but that seemed to undermine the idea of having an asynchronous queue in the first place.