magistrala icon indicating copy to clipboard operation
magistrala copied to clipboard

Add Kafka writer

Open drasko opened this issue 6 years ago • 5 comments

FEATURE REQUEST

  1. 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.

  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.

  1. Indicate the importance of this feature to you (must-have, should-have, nice-to-have). Must-have

drasko avatar Dec 21 '19 10:12 drasko

https://github.com/nats-io/nats-kafka??

jruizaranguren avatar Dec 21 '19 18:12 jruizaranguren

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

drasko avatar Dec 21 '19 19:12 drasko

This can be easily done through mProxy. Closing here, as this will not be main focus of the Core.

drasko avatar Mar 08 '20 10:03 drasko

An example implementation can be found here: https://github.com/dusanb94/mainflux/tree/mproxy-kafka/mqtt/mproxy/kafka

dborovcanin avatar Mar 08 '20 19:03 dborovcanin

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.

dborovcanin avatar Jan 25 '21 13:01 dborovcanin