@Override
    public void start(Platform platform, WorkerStatusTracker status,
                      KafkaFutureImpl<String> doneFuture) {
        if (!running.compareAndSet(false, true)) {
            throw new IllegalStateException("ConfigurableProducerWorker is already running.");
        }
        log.info("{}: Activating ConfigurableProducerWorker with {}", id, spec);
        // Create an executor with 2 threads.  We need the second thread so
        // that the StatusUpdater can run in parallel with SendRecords.
        this.executor = Executors.newScheduledThreadPool(2,
            ThreadUtils.createThreadFactory("ConfigurableProducerWorkerThread%d", false));
        this.status = status;
        this.doneFuture = doneFuture;
        executor.submit(new Prepare());
    }
This workload allows for customized and even variable configurations in terms of messages per second, message size,
batch size, key size, and even the ability to target a specific partition out of a topic.

See `ConfigurableProducerSpec` for a more detailed description.
trogdor/src/main/java/org/apache/kafka/trogdor/workload/ConfigurableProducerWorker.java