Add AF5 DeadLetterManager and RSocket DLQ responder#152
Conversation
CodeDrivenMitch
left a comment
There was a problem hiding this comment.
Looks good overall, I've been testing with it, nice work.
Requesting changes to move the discover() method to a start handler, to reduce runtime load. I will push something I have locally to this branch, see if you like it or want to adapt it.
In addition, I see no tests at all, which would be preferable to have.
| } | ||
|
|
||
| @Suppress("UNCHECKED_CAST") | ||
| private fun discover(): List<DlqEntry> { |
There was a problem hiding this comment.
This call is done on every processor report, and every dlq call.
While fine in essence, the configuration of the application does not change runtime.
We can do this once, in an onStart handler, and keep it as a map/list in this component :)
… keep the per-poll payload small (a 1000-letter cap caused ~7s refresh cycles on local DLQs at page-size 25).
|



Adds a DeadLetterManager that operates on the AF5 SequencedDeadLetterQueue API, with native paginated reads for JdbcSequencedDeadLetterQueue via PagingJdbcIterable, an in-memory fallback for the default variant, and unwrapping of the CachingSequencedDeadLetterQueue wrapper.
The new RSocketDlqResponder exposes the full DLQ surface over RSocket - sequence list, paginated SEQUENCE_LETTERS route, retry/process-many, delete/delete-many, single-letter delete - and returns counts so the platform UI can confirm how many letters actually moved.
AxoniqPlatformDeadLetterConfigurerEnhancer auto-wires DLQ support into every PooledStreamingEventProcessor, and ProcessingGroupInfoSource exposes sibling EventHandlingComponents under the same processor group.|
Relates: https://github.com/AxonIQ/axoniq-platform/pull/578