You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Resolves#2155
Co-authored-by: Viacheslav Chernyshev <[email protected]>
- Add a `BitSet` property to suppress individual standard headers
- Support multiple `headersFunction`
- Allow complete customization of exception headers
- Add `setHeadersFunction` to the DLPR factory for retryable topics
* Fix typo in doc.
* Rework enum usage; other refactoring; add getters to `HeaderNames`.
* Fix javadocs.
* Doc polishing.
* Change BitSet to EnumSet.
* Fix bogus import.
* Defend against immutable headers; only create new when detected.
* Fix NOSONAR typo.
**Cherry-pick to `2.8.x`**
Copy file name to clipboardExpand all lines: spring-kafka-docs/src/main/asciidoc/kafka.adoc
+29-1Lines changed: 29 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -5641,7 +5641,7 @@ Key exceptions are only caused by `DeserializationException` s so there is no `D
5641
5641
There are two mechanisms to add more headers.
5642
5642
5643
5643
1. Subclass the recoverer and override `createProducerRecord()` - call `super.createProducerRecord()` and add more headers.
5644
-
2. Provide a `BiFunction` to receive the consumer record and exception, returning a `Headers` object; headers from there will be copied to the final producer record.
5644
+
2. Provide a `BiFunction` to receive the consumer record and exception, returning a `Headers` object; headers from there will be copied to the final producer record; also see <<dlpr-headers>>.
5645
5645
Use `setHeadersFunction()` to set the `BiFunction`.
5646
5646
5647
5647
The second is simpler to implement but the first has more information available, including the already assembled standard headers.
@@ -5736,6 +5736,34 @@ The reason for the two properties is because, while you might want to retain onl
5736
5736
5737
5737
`appendOriginalHeaders` is applied to all headers named `*ORIGINAL*` while `stripPreviousExceptionHeaders` is applied to all headers named `*EXCEPTION*`.
5738
5738
5739
+
Starting with version 2.8.4, you now can control which of the standard headers will be added to the output record.
5740
+
See the `enum HeadersToAdd` for the generic names of the (currently) 10 standard headers that are added by default (these are not the actual header names, just an abstraction; the actual header names are set up by the `getHeaderNames()` method which subclasses can override.
5741
+
5742
+
To exclude headers, use the `excludeHeaders()` method; for example, to suppress adding the exception stack trace in a header, use:
5743
+
5744
+
====
5745
+
[source, java]
5746
+
----
5747
+
DeadLetterPublishingRecoverer recoverer = new DeadLetterPublishingRecoverer(template);
In addition, you can completely customize the addition of exception headers by adding an `ExceptionHeadersCreator`; this also disables all standard exception headers.
5753
+
5754
+
====
5755
+
[source, java]
5756
+
----
5757
+
DeadLetterPublishingRecoverer recoverer = new DeadLetterPublishingRecoverer(template);
Starting with version 2.8.4, if you wish to add custom headers (in addition to the retry information headers added by the factory, you can add a `headersFunction` to the factory - `factory.setHeadersFunction((rec, ex) -> { ... })`
0 commit comments