Hello, No problem to also add a constructor taking the StreamsConfig in the TopologyTestDriver.
Summary about the changes to apply: - Create 2 new constructors in KafkaProducer - Create a new constructor in KafkaConsumer and increase de visibility of an existing one - Create a new constructor in TopologyTestDriver Kr, F. Le ven. 6 mai 2022 à 16:57, John Roesler <vvcep...@apache.org> a écrit : > Thanks for the KIP, François! > > I'm generally in favor of your KIP, since you're > proposing to follow the existing pattern of the > constructors for both Producer and Consumer, > but with the config object instead of Properties > or Map configs. Also, because we already have > this pattern in Streams, and we are just > extending it to Producer and Consumer. > > Following on the KIP-378 discussion, I do still think > this is somewhat of an abuse of the Config objects, > and it would be better to have a formal dependency > injection interface, but I also don't want to let perfect > be the enemy of good. Since it looks like this approach > works, and there is also some precedent for it already, > I'd be inclined to approve it. > > Since KIP-378 didn't make it over the finish line, and it > seems like a small expansion to your proposal, do you > mind also adding the StreamsConfig to the > TopologyTestDriver constructors? That way, we can go > ahead and resolve both KIPs at once. > > Thank you, > -John > > > On Fri, May 6, 2022, at 06:06, François Rosière wrote: > > To stay consistent with existing code, we should simply add 2 > constructors. > > One with ser/deser and one without. > > So that, users have the choice to use one or the other. > > I updated the KIP accordingly. > > > > Le ven. 6 mai 2022 à 12:55, François Rosière <francois.rosi...@gmail.com> > a > > écrit : > > > >> On the other hand, the KafkaConsumer constructor with a config + > >> serializer and deserializer already exists but is not public. > >> It would also complexify a bit the caller to not have the > >> serializer/deserializer exposed at constructor level. > >> > >> Once the KIP would have been implemented, for streams, instead of > having a > >> custom config (already possible), I may simply define a custom > >> KafkaClientSupplier reusing the custom configs of both the producer and > the > >> consumer. > >> This supplier currently creates producers and consumers using the > >> constructors with a map of config + serializer/deserializer. > >> > >> So, it seems it's easier to have the constructor with 3 parameters. But > in > >> any case, it will work if the config can be accessed... > >> > >> Le ven. 6 mai 2022 à 12:14, François Rosière < > francois.rosi...@gmail.com> > >> a écrit : > >> > >>> Hello, > >>> > >>> We may create a constructor with a single parameter which is the config > >>> but then, I would need to give the serializer/deserializer by also > >>> overriding the config. > >>> Like I would do for the interceptors. > >>> So, no real opinion on that, both solutions are ok for me. > >>> Maybe easier to take the approach of the single parameter. > >>> > >>> Hope it respond to the question. > >>> > >>> Kr, > >>> > >>> F. > >>> > >>> Le ven. 6 mai 2022 à 11:59, Bruno Cadonna <cado...@apache.org> a > écrit : > >>> > >>>> Hi Francois, > >>>> > >>>> Thank you for updating the KIP! > >>>> > >>>> Now the motivation of the KIP is much clearer. > >>>> > >>>> I would still be interested in: > >>>> > >>>> >> 2. Why do you only want to change/add the constructors that take > the > >>>> >> properties objects and de/serializers and you do not also want to > >>>> >> add/change the constructors that take only the properties? > >>>> > >>>> > >>>> Best, > >>>> Bruno > >>>> > >>>> On 05.05.22 23:15, François Rosière wrote: > >>>> > Hello Bruno, > >>>> > > >>>> > The KIP as been updated. Feel free to give more feedbacks and I will > >>>> > complete accordingly. > >>>> > > >>>> > Kr, > >>>> > > >>>> > F. > >>>> > > >>>> > Le jeu. 5 mai 2022 à 22:22, Bruno Cadonna <cado...@apache.org> a > >>>> écrit : > >>>> > > >>>> >> Hi Francois, > >>>> >> > >>>> >> Thanks for the KIP! > >>>> >> > >>>> >> Here my first feedback: > >>>> >> > >>>> >> 1. Could you please extend the motivation section, so that it is > clear > >>>> >> for a non-Spring dev why the change is needed? Usually, a > motivation > >>>> >> section benefits a lot from an actual example. > >>>> >> Extending the motivation section would also make the KIP more > >>>> >> self-contained which is important IMO since this is kind of a log > of > >>>> the > >>>> >> major changes to Kafka. Descriptions of major changes should not > >>>> >> completely depend on external links (which may become dead in > future). > >>>> >> Referencing external resources to point to more details or give > >>>> context > >>>> >> is useful, though. > >>>> >> > >>>> >> 2. Why do you only want to change/add the constructors that take > the > >>>> >> properties objects and de/serializers and you do not also want to > >>>> >> add/change the constructors that take only the properties? > >>>> >> > >>>> >> 3. I found the following stalled KIP whose motivation is really > >>>> similar > >>>> >> to yours: > >>>> >> > >>>> >> > >>>> >> > >>>> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-378%3A+Enable+Dependency+Injection+for+Kafka+Streams+handlers > >>>> >> > >>>> >> That KIP is also the reason why Kafka Streams still has the > >>>> constructors > >>>> >> with the StreamsConfig parameter. Maybe you want to mention this > KIP > >>>> in > >>>> >> yours or even incorporate the remaining topology test driver API > >>>> changes > >>>> >> in your KIP. > >>>> >> Some related links: > >>>> >> - https://github.com/apache/kafka/pull/5344#issuecomment-413350338 > >>>> >> - https://github.com/apache/kafka/pull/10484 > >>>> >> - https://issues.apache.org/jira/browse/KAFKA-6386 > >>>> >> > >>>> >> Best, > >>>> >> Bruno > >>>> >> > >>>> >> > >>>> >> On 04.05.22 22:26, François Rosière wrote: > >>>> >>> Hi all, > >>>> >>> > >>>> >>> KIP-832 has been created to allow implementing Spring managed > >>>> >> interceptors > >>>> >>> for Producers and Consumers. > >>>> >>> > >>>> >>> At the moment, interceptors are given as configuration classes to > the > >>>> >>> producer and consumer configurations. So, the idea here would be > to > >>>> >> create > >>>> >>> 2 new constructors to allow using a Producer and Consumer > >>>> configuration > >>>> >>> instead of properties or a key value map of configurations > entries. > >>>> >>> Interceptors could then be given as instances by overriding a > config > >>>> >> method. > >>>> >>> More details can be found in the Spring issue. > >>>> >>> https://github.com/spring-projects/spring-kafka/issues/2244 > >>>> >>> > >>>> >>> Any feedback, proposal, vote for this KIP would be more than > welcome. > >>>> >>> > >>>> >>> Kind regards, > >>>> >>> > >>>> >>> Francois R. > >>>> >>> > >>>> >>> Le lun. 2 mai 2022 à 21:05, François Rosière < > >>>> francois.rosi...@gmail.com> > >>>> >> a > >>>> >>> écrit : > >>>> >>> > >>>> >>>> Kip link: > >>>> >>>> > >>>> >> > >>>> > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=211882578 > >>>> >>>> > >>>> >>>> > >>>> >>> > >>>> >> > >>>> > > >>>> > >>> >