Maybe the create_threads method in consumer should be refactored into separate methods for each thread, so you only need to override the part that creates the worker threads?