Thanks, François! Those changes look good to me.
Thanks, -John On Fri, May 6, 2022, at 13:51, François Rosière wrote: > The KIP has been updated to reflect the last discussion > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=211882578#KIP832:Allowcreatingaproducer/consumerusingaproducer/consumerconfig-ProposedChanges > > > Le ven. 6 mai 2022 à 20:44, François Rosière <francois.rosi...@gmail.com> a > écrit : > >> 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 >>> >>>> >>>> >>> >>>> >>>> >>> >>>> >>> >>> >>>> >> >>> >>>> > >>> >>>> >>> >>> >>> >>