Add Kafka writer
FEATURE REQUEST
-
Is there an open issue addressing this request? If it does, please add a "+1" reaction to the existing issue, otherwise proceed to step 2.
-
Describe the feature you are requesting, as well as the possible use case(s) for it.
May Mainflux users have already legacy systems (apps) running on an enterprise bus which is often Kafka.
It would be high effort for them to switch to NATS, i.e. change their legacy apps to subscribe to NATS provided by Mainflux, or use Mainflux API to fetch the data.
For this purpose we can provide a NATS -> Kafka adapter/writer. It would be a small piece of software, very similar to existing writers (just that it will not write in some DB, but Kafka). It would just bluntly take messages from NATS and throw them into Kafka.
- Indicate the importance of this feature to you (must-have, should-have, nice-to-have). Must-have
https://github.com/nats-io/nats-kafka??
Makes sense, but I think:
- It should be really trivial, so that it merits lean implementation rather than dragging whole can of worms (I see tools like
kafka2nats,stan2kafka, etc... over there) - We will probably need to parse Message protobuf struct and send payload-only in the Kafka, so some minimal processing should be done by our Transformer lib
This can be easily done through mProxy. Closing here, as this will not be main focus of the Core.
An example implementation can be found here: https://github.com/dusanb94/mainflux/tree/mproxy-kafka/mqtt/mproxy/kafka
The idea is to generalize the approach from this example using a custom writer (with a custom publisher), rather than creating only a custom publisher and coupling it with the MQTT adapter.