Skip to content

Add AF5 DeadLetterManager and RSocket DLQ responder#152

Open
stefanmirkovic wants to merge 9 commits into
mainfrom
feature/af5-dlq-manager
Open

Add AF5 DeadLetterManager and RSocket DLQ responder#152
stefanmirkovic wants to merge 9 commits into
mainfrom
feature/af5-dlq-manager

Conversation

@stefanmirkovic
Copy link
Copy Markdown
Contributor

@stefanmirkovic stefanmirkovic commented Apr 30, 2026

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

@stefanmirkovic stefanmirkovic self-assigned this Apr 30, 2026
@stefanmirkovic stefanmirkovic deleted the feature/af5-dlq-manager branch May 6, 2026 07:52
@stefanmirkovic stefanmirkovic restored the feature/af5-dlq-manager branch May 6, 2026 07:54
@stefanmirkovic stefanmirkovic reopened this May 6, 2026
Copy link
Copy Markdown
Collaborator

@CodeDrivenMitch CodeDrivenMitch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Collaborator

@CodeDrivenMitch CodeDrivenMitch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Copy Markdown
Collaborator

@CodeDrivenMitch CodeDrivenMitch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're getting closer! The primary reason I'm requesting changes again is the SequenceIdentifierResolver and the payload type resolving. The rest are nits.

Copy link
Copy Markdown
Collaborator

@CodeDrivenMitch CodeDrivenMitch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants