Giter VIP home page Giter VIP logo

Comments (7)

rwdaigle avatar rwdaigle commented on July 21, 2024

Hi @rawkode, thanks for this suggestion!

I generally try to avoid adding pluggable functionality to do something that's already easily accessible. So in this case the value of a config-specified serializer seems low since it's not hard for implementers to know how or where to implement that functionality themselves (right there in the message handler!). Doing otherwise tends to just increase the framework's surface area for little real value. But that's purely from a feature management perspective. Perhaps there's value in having a few common serializer implementations already available?

Happy to hear others' thoughts!

/cc @sdball @objectuser

from kaffe.

rawkode avatar rawkode commented on July 21, 2024

@rwdaigle I'm now running 9 different services, all implementing the same piece of functionality. Perhaps I am in a minority with my usage. Although the setup is trivial, I do prefer not repeating myself 😄

from kaffe.

sdball avatar sdball commented on July 21, 2024

How about making your serializer logic into its own dependency via mix to be called from each handle_message?

def handle_message(message) do
  MyCustomMessageParser.parse!(message)
  |> other_things
  |> for_this_service
end

You'd still get consolidated parsing logic with minimal supporting code. But instead of one line of configuration you'd have one line of message handling code. That keeps Kaffe's contract simpler and keeps all the message handling logic out in the open.

from kaffe.

rawkode avatar rawkode commented on July 21, 2024

OK. I'm sensing you aren't keen on this idea 😂

I'll close it and work around it.

from kaffe.

rwdaigle avatar rwdaigle commented on July 21, 2024

Haha, sorry @rawkode!

I think this is a great use-case that forces us to be more explicit about the contract for Kaffe. In my mind it's a low-level Kafka library that handles much of the nuance associated with practical usage of Kafka. So one-level above a pure adapter (that's what brod is), but not itself a framework. It's more of a convenience library.

I think a good litmus test for this is that I don't ever see Kaffe concerning itself with actual message bodies (parsing, plucking values, etc...), as that starts to get into domain logic. Anything Kafka metadata related however, I would see as fair game.

Hopefully that sounds logical vs. just an arbitrary line that you happen to be on the other side of for this example?

from kaffe.

rubberduck203 avatar rubberduck203 commented on July 21, 2024

Unfortunately, that’s an unexpected approach for the Kafka community. The JVM libs and the librdkafka family all expect producers/consumers to specify the serializer/deserializer as part of the config.

from kaffe.

sdball avatar sdball commented on July 21, 2024

Kaffe was designed to make its use and setup as trivial as possible. In this it’s more like ruby-kafka’s approach to serialization: https://github.com/zendesk/ruby-kafka/blob/master/README.md#serialization

from kaffe.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.