Skip to content

Commit c4d5f78

Browse files
committed
More ConversionException Improvements
- add consumer records for batch conversion errors.
1 parent d9870e9 commit c4d5f78

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

spring-kafka/src/main/java/org/springframework/kafka/support/converter/ConversionException.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616

1717
package org.springframework.kafka.support.converter;
1818

19+
import java.util.ArrayList;
20+
import java.util.Collections;
21+
import java.util.List;
22+
1923
import org.apache.kafka.clients.consumer.ConsumerRecord;
2024

2125
import org.springframework.kafka.KafkaException;
@@ -33,6 +37,8 @@ public class ConversionException extends KafkaException {
3337

3438
private final ConsumerRecord<?, ?> record;
3539

40+
private final List<ConsumerRecord<?, ?>> records = new ArrayList<>();
41+
3642
private final Message<?> message;
3743

3844
/**
@@ -59,6 +65,20 @@ public ConversionException(String message, ConsumerRecord<?, ?> record, Throwabl
5965
this.message = null;
6066
}
6167

68+
/**
69+
* Construct an instance with the provided properties.
70+
* @param message A text message describing the reason.
71+
* @param records the consumer records.
72+
* @param cause the cause.
73+
* @since 2.7.2
74+
*/
75+
public ConversionException(String message, List<ConsumerRecord<?, ?>> records, Throwable cause) {
76+
super(message, cause);
77+
this.record = record;
78+
this.records.addAll(records);
79+
this.message = null;
80+
}
81+
6282
/**
6383
* Construct an instance with the provided properties.
6484
* @param message A text message describing the reason.
@@ -82,6 +102,16 @@ public ConversionException(String message, Message<?> msg, Throwable cause) {
82102
return this.record;
83103
}
84104

105+
/**
106+
* Return the consumer record, if available.
107+
* @return the record.
108+
* @since 2.7.2
109+
*/
110+
@Nullable
111+
public List<ConsumerRecord<?, ?>> getRecords() {
112+
return Collections.unmodifiableList(this.records);
113+
}
114+
85115
/**
86116
* Return the {@link Message}, if available.
87117
* @return the message.

0 commit comments

Comments
 (0)