Skip to content

Add AF5 DeadLetterManager and RSocket DLQ responder#152

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

Add AF5 DeadLetterManager and RSocket DLQ responder#152
stefanmirkovic wants to merge 4 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.

}

@Suppress("UNCHECKED_CAST")
private fun discover(): List<DlqEntry> {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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 :)

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 8, 2026

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