This PR implements a mechanism for reusing the same queue to different job types. It allows to specify several named process functions, one for every type. It can be compared to having a large process function with a switch case, but the implemented solution allows for cleaner and more modular uses.