> A minor comment. The SPI is currently used exclusively for the > ConsoleProducer. However, it exposes high-level methods which hint at > it being a generic component. What is the actual scope of the SPI > inside the Kafka codebase? Is it planned to be re-used in other tools? > Or is this interface used (not implemented) outside of the > ConsoleProducer?
It is used by ConsoleProducer only. The interface is a kind of public APIs, and IIRC the public APIs must be written by Java. That is why we need to move it out of core module (simplify core module also). There are many other interfaces which allow users to "enhance" kafka. For example, partitioner, assignor, authorizer, and so on. Most of them are used exclusively for specify component, and I guess not all interfaces are widely used (implemented). Maybe we can file a thread to cleanup the "unused" interfaces.