We can envision this API to be the main reference for data collection. This should retain only basic functionalities and try to remove the external bus/queue while possibly keeping an internal buffer.
Then, we can have multiple and different implementations of the collection.
E.g: #7 will be just extending and implementing the collection using Kafka as transport layer