To be clear, there is no problem for me to update the current KIP with the builder approach. It's not a lot of work in terms of code. So, up to you. Let me know and I will do the necessary to go in one or the other direction... Thanks again for the feedbacks.
Le mer. 11 mai 2022 à 10:52, François Rosière <francois.rosi...@gmail.com> a écrit : > Hello, > > Builder is clearly the way to go for future releases of Kafka. > > If we align streams, we would have 3 builders > > new ConsumerBuilder<String, MyPojo>() > .withKeyDeserializer(<KEY_DESERIALIZER>) > .withValueDeserializer(<VALUE_DESERIALIZER>) > .withInterceptors(<LIST_OF_INTERCEPTORS>) > .withMetricsReporter(<METRICS_REPORTER>) > .build(<MAP_OR_PROPERTIES_OR_CONFIG>); > > new ProducerBuilder<String, MyPojo>() > .withKeySerializer(<KEY_SERIALIZER>) > .withValueSerializer(<VALUE_SERIALIZER>) > .withInterceptors(<LIST_OF_INTERCEPTORS>) > .withPartitioner(<PARTITIONER>) > .withMetricsReporter(<METRICS_REPORTER>) > .build(<MAP_OR_PROPERTIES_OR_CONFIG>); > > new KafkaStreamsBuilder(<TOPOLOGY>) > .withProducerInterceptors(<LIST_OF_PRODUER_INTERCEPTORS>) > .withConsumerInterceptors(<LIST_OF_CONSUMER_INTERCEPTORS>) > .withTime(<TIME>) > .withKafkaClientSupplier(<KAFKA_CLIENT_SUPPLIER>) > .withMetricsReporter(<METRICS_REPORTER>) > .build(<MAP_OR_PROPERTIES_OR_CONFIG>); > > The builder property would always override the configuration "instances". > There is maybe other methods to add to the builders... > The map, properties or config could be given to the constructor of the > builder instead of the build method... > At the end, we may only keep one single constructor in the Producer, > Consumer and KafkaStreams obects. > > @Chris, @Bruno, thank you for your replies and proposals. Do you want I > create another KIP explaining the builder approach or do you prefer to do > it? > > Kr, > > F. > > > Le mer. 11 mai 2022 à 09:46, Bruno Cadonna <cado...@apache.org> a écrit : > >> Hi Francois and Chris, >> >> I find the idea of the builder interesting. >> >> I think we should go ahead with the current KIP as it is to allow >> Francois to fix his issue soon. If one of you or both want to push >> forward the builder idea, feel free to create a new KIP and discuss it >> with the community. >> >> Regarding Francois' questions: >> >> 3. If the existing constructors should be removed, they need to be >> marked as deprecated and removed in one of the next major releases. >> >> 5. Yes, I think Streams should be aligned. >> >> Both questions should be discussed in the context of a new KIP about the >> builder idea. >> >> Best, >> Bruno >> >> On 11.05.22 04:24, Chris Egerton wrote: >> > Hi Francois, >> > >> > Thanks for your thoughts. I think it's worth noting that in regards to >> item >> > 2, it's possible to explicitly declare the type parameters for a builder >> > without capturing it in a variable; for example: >> > >> > KafkaProducer<String, Integer> p = new Builder<String, Integer>(...) >> > .withKeySerializer(new StringSerializer()) >> > .withValueSerializer(new IntegerSerializer()) >> > .build(); >> > >> > That aside, given the three binding votes already cast on the vote >> thread, >> > it's probably too late to be worth changing direction at this point. >> Thanks >> > for entertaining the proposal, and congratulations on your KIP! >> > >> > Cheers, >> > >> > Chris >> > >> > On Tue, May 10, 2022 at 5:33 PM François Rosière < >> francois.rosi...@gmail.com> >> > wrote: >> > >> >> Hello Chris, >> >> >> >> Thanks for the feedback. Builders is definitely the pattern to apply >> when >> >> an object needs to be built using different arguments/combinations. >> >> >> >> Here are my thoughts about the proposal: >> >> >> >> 1. The builder should only expose meaningful methods for the users >> such as >> >> the interceptors, the serializer/deserializer, partitioner, etc. A >> method >> >> like the configured instances is internal and should not be exposed if >> we >> >> don't want to expose the config itself. Using this internal method is >> the >> >> only way to solve the issue if the config is exposed. >> >> >> >> 2. As the key and value types are not given, a variable will need to be >> >> created for the builder before being used. Otherwise, there is no way >> to >> >> infer the type correctly. Breaks a bit the inline usage with DSL style. >> >> >> >> 3. What about existing constructors, they would need to stay to keep >> >> compatibility with existing o could they be removed in benefit of the >> >> builder? >> >> >> >> 4. Having an access to the config also gives a way to also fine tune >> other >> >> aspects such as the logging related to the config. Log unused, skip >> some >> >> properties, etc. >> >> >> >> 5. What about streams? Shouldn't it be aligned? >> >> >> >> So, to summarise, the KIP was a best effort solution to support already >> >> configured instances related to both the producer and the consumer. >> >> The builder will work, it's just a matter of deciding the best >> approach... >> >> for me, both solutions are fine, I just need a way to inject already >> >> configured dependencies into the producers and consumers. >> >> >> >> If we conclude, I will drop a PR on Github. >> >> >> >> Kr, >> >> >> >> F. >> >> >> >> Le mar. 10 mai 2022 à 15:01, Chris Egerton <fearthecel...@gmail.com> a >> >> écrit : >> >> >> >>> Hi Francois, >> >>> >> >>> Thanks for the KIP! I sympathize with the issue you're facing and with >> >>> John's reluctance to let perfect be the enemy of good, and if KIP >> freeze >> >>> were tomorrow, I think this would be good enough. Given that we still >> >> have >> >>> some time to work with, I'd like to propose an alternative approach >> and >> >> see >> >>> what your thoughts are. >> >>> >> >>> There are a few issues with the current client APIs that are closely >> >>> related to the KIP: >> >>> 1. Too many constructors (there are currently four each for >> KafkaProducer >> >>> and KafkaConsumer, yet they all do basically the same thing) >> >>> 2. Lack of type safety with interceptors (you have no way to enforce >> at >> >>> compile time that your ProducerInterceptor<String, Integer> is used >> with >> >> a >> >>> Serializer<String> and Serializer<Integer>, for example) >> >>> 3. Inflexibility and inconsistency with instantiation of pluggable >> >>> interfaces (you can bring your own (de)serializers, but everything >> else >> >>> gets instantiated and configured for you at producer/consumer >> >> construction >> >>> time) >> >>> >> >>> The KIP as it exists now will only address item 3, and will exacerbate >> >> item >> >>> 1. >> >>> >> >>> In addition, there are a few new issues introduced by the KIP as it >> >> exists >> >>> now: >> >>> 1. Tighter coupling between the ProducerConfig/ConsumerConfig classes >> and >> >>> the KafkaProducer/KafkaConsumer classes. Any change we make in the >> future >> >>> that breaks either of these config classes in unexpected ways (but >> which >> >>> does not break the KafkaProducer/KafkaConsumer constructors that do >> not >> >>> accept these classes as parameters) will now have a much higher >> chance to >> >>> also break a user's entire producer/consumer application. >> >>> 2. Complexity for users like yourself who would like to override >> behavior >> >>> in a ProducerConfig/ConsumerConfig in order to inject pre-instantiated >> >>> dependencies. The example in the KIP overrides >> >>> AbstractConfig::getConfiguredInstances [1] in order to achieve this. >> But >> >>> there are two other overloaded variants of getConfiguredInstances, and >> >> two >> >>> AbstractConfig::getConfiguredInstance methods that also exist. We'd >> >> either >> >>> need to establish a dependency graph between these methods (e.g., some >> >>> methods are guaranteed to invoke another overloaded variant) as part >> of >> >> the >> >>> public API for the AbstractConfig, or users would need to override >> every >> >>> single one of these methods in order to ensure that their code won't >> >> break >> >>> at runtime after bumping their Kafka version. >> >>> >> >>> I think introducing the builder pattern for KafkaProducer and >> >> KafkaConsumer >> >>> would alleviate all of these issues. As a rough draft of what the API >> >> might >> >>> look like for KafkaProducer: >> >>> >> >>> public class Builder<K, V> { >> >>> private final Map<String, Object> props; >> >>> private Serializer<K> keySerializer; >> >>> private Serializer<V> valueSerializer; >> >>> private List<ProducerInterceptor<K, V>> interceptors; >> >>> private Map<String, Object> configuredInstances; >> >>> private Map<String, List<Object>> configuredInstanceLists; >> >>> >> >>> public Builder(Map<String, Object> props) { >> >>> this.props = props; >> >>> this.interceptors = new ArrayList<>(); >> >>> this.configuredInstances = new HashMap<>(); >> >>> this.configuredInstanceLists = new HashMap<>(); >> >>> } >> >>> >> >>> // Use this serializer, if non-null >> >>> // Will take precedence over any serializer class specified in >> the >> >>> properties for this producer >> >>> public Builder withKeySerializer(Serializer<K> serializer) { >> >>> this.keySerializer = serializer; >> >>> return this; >> >>> } >> >>> >> >>> public Builder withValueSerializer(Serializer<V> serializer) { >> >>> this.valueSerializer = serializer; >> >>> return this; >> >>> } >> >>> >> >>> // Use these interceptors (has no effect if null) >> >>> // Each must already be configured >> >>> // Will be combined with any interceptor classes also specified >> in >> >> the >> >>> properties for this producer >> >>> public Builder withInterceptors(List<ProducerInterceptor<K, V>> >> >>> interceptors) { >> >>> if (interceptors != null) { >> >>> this.interceptors.addAll(interceptors); >> >>> } >> >>> return this; >> >>> } >> >>> >> >>> // Use this plugin instance, if non-null >> >>> // Must already be configured >> >>> // Will take precedence over any plugin class specified for the >> same >> >>> property in the properties for this producer (wording here needs work >> but >> >>> you get the idea) >> >>> public Builder withConfiguredInstance(String property, Object >> >> instance) >> >>> { >> >>> this.configuredInstances.put(property, instance); >> >>> return this; >> >>> } >> >>> >> >>> // Use these plugin instances (has no effect if null) >> >>> // Each must already be configured >> >>> // Will be combined with any plugin classes also specified for >> the >> >> same >> >>> property in the properties for this consumer >> >>> public Builder withConfiguredInstances(String property, >> List<Object> >> >>> instances) { >> >>> this.configuredInstanceLists.put(property, instances); >> >>> return this; >> >>> } >> >>> >> >>> public KafkaProducer<K, V> build() { ... } >> >>> } >> >>> >> >>> Thoughts? >> >>> >> >>> [1] - >> >>> >> >>> >> >> >> https://kafka.apache.org/31/javadoc/org/apache/kafka/common/config/AbstractConfig.html#getConfiguredInstances(java.lang.String,java.lang.Class,java.util.Map) >> >>> >> >>> Cheers, >> >>> >> >>> Chris >> >>> >> >>> On Mon, May 9, 2022 at 4:55 PM Bruno Cadonna <cado...@apache.org> >> wrote: >> >>> >> >>>> Hi Francois, >> >>>> >> >>>> I think you can go ahead and call for votes. >> >>>> >> >>>> Could you please also clean up a little bit the KIP since it has >> still >> >>>> parts that refer to its first version? For example, "Compatibility, >> >>>> Deprecation, and Migration Plan" still mentions only two >> constructors. >> >>>> IMO you can also remove section "Public Interfaces" since it does not >> >>>> contain much information. >> >>>> >> >>>> Best, >> >>>> Bruno >> >>>> >> >>>> On 09.05.22 17:45, Bruno Cadonna wrote: >> >>>>> Hi Francois, >> >>>>> >> >>>>> You can open a PR and people can review it, but it must not be >> merged >> >>>>> until the KIP is approved. >> >>>>> >> >>>>> Best, >> >>>>> Bruno >> >>>>> >> >>>>> On 09.05.22 16:07, François Rosière wrote: >> >>>>>> Can a PR be dropped on Github or do we still need some approval >> >> first? >> >>>>>> >> >>>>>> Le dim. 8 mai 2022 à 06:08, John Roesler <vvcep...@apache.org> a >> >>> écrit >> >>>> : >> >>>>>> >> >>>>>>> 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 >> >>>>>>> >> >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>> >> >>>>>> >> >>>> >> >>> >> >> >> > >> >