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.
… keep the per-poll payload small (a 1000-letter cap caused ~7s refresh cycles on local DLQs at page-size 25).
CodeDrivenMitch
left a comment
There was a problem hiding this comment.
Revising the PR I noticed that we completely lost all dlq customization settings that we had in AF4. In addition, there's a bug regarding sequence identifiers. We'll have to change that before we merge.
…, integration test, drop verbose maxSequenceLetters comment
…de badge (MASKED/LIMITED/NONE) in UI and disable bulk actions in NONE; fix findSequence logging and double-hash
CodeDrivenMitch
left a comment
There was a problem hiding this comment.
We're getting closer! The primary reason I'm requesting changes again is the SequenceIdentifierResolver and the payload type resolving. The rest are nits.
CodeDrivenMitch
left a comment
There was a problem hiding this comment.
I just saw this comment didn't post. But I think we need to default to null in the SetupPayloadCreator when there's no DLQ library on the classpath, to handle this correctly
The setup payload reported `NONE` for every client, conflating two distinct states: the DLQ feature exists but data is hidden (NONE) vs. the client has no DLQ library on its classpath at all (no feature). Now `null` signals the latter; the platform UI can drop DLQ-specific chrome for those clients instead of showing a misleading NONE badge.
|



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