[ https://issues.apache.org/jira/browse/KAFKA-4911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15928218#comment-15928218 ]
Kevin Conaway commented on KAFKA-4911: -------------------------------------- This would also be useful for error handling as well if you want to tie the Exception from the callback to a specific record. > Add ProducerRecord to ProducerInterceptor#onAcknowledgement > ----------------------------------------------------------- > > Key: KAFKA-4911 > URL: https://issues.apache.org/jira/browse/KAFKA-4911 > Project: Kafka > Issue Type: Improvement > Components: clients, producer > Affects Versions: 0.10.2.0 > Reporter: Kevin Conaway > > [~apovzner] I'd like to propose adding the {{ProducerRecord}} field to the > {{onAcknowledgement}} callback in the {{ProducerInterceptor}} interface that > was added in KAFKA-3162 > The issue I'm having is that its not possible to determine if a specific > record was sent (based on the record content or key), only that _some_ record > was sent based on the {{RecordMetadata}}. > From reading the KIP and the initial mailing list discussion, it seems that > the design was modeled after the existing {{Producer.Callback}} interface. > This model makes sense given that callbacks are typically anonymous functions > where you would have access to the producer record: > {code:java} > ProducerRecord record = ...; > producer.send(record, new Callback() { > @Override > public void onCompletion(RecordMetadata recordMetadata, Exception e) { > // do something with record > } > }) > {code} > However, based on my understanding of the interceptor design, the interceptor > should be thread safe and thus stateless. Even if you wanted to make it > stateful, its not easy to tie together a record from {{onSend}} to > {{onAcknowledgement}} > With that in mind, is there a way that the producer interceptor API can be > modified so that implementers can be aware of the key & content of the record > that was acknowledged? -- This message was sent by Atlassian JIRA (v6.3.15#6346)