frankframework / frankframework/frankframework

Seperate polling interval and retry interval in receiver/listener

Open
#11,616 1 comment 0 reactions 0 assignees View on GitHub
Needs Triage
Dominant language
Java
Stars
167
Forks
87
Avg merge
1d 2h
Merged PRs (30d)
206

Description

### Related Problem or Business Case

When working with pullingListeners such as the MessageStoreListener, you almost always want your polling interval to be much smaller than your retry interval. For example: I would like a polling interval of 30s, but I would like to retry every 15 min or with some sort of backoff perhaps. Currently the retry interval is the same as the polling interval, which means that 5 max retries would be exhausted within 2.5min. This is usually not enough time for upstream services to recover from a temporary issue.

The 'maxBackoffDelay' attribute is also no solution for this as it is capped at the transaction timeout, which is usually < 1min.

Currently we are constantly creating dubious solutions to work around this by setting up a scheduler that triggers at the retry interval and changes the status of the message in the database.

### Describe the Feature

Quick solution could simply be to add a retryInterval attribute + a warning if an incompatible transactionAttribute is used.

Fancy solution could be dedicated RetryStrategy sort of element(s). Would expect a retry functionality to be available in the relevant listener instead of the receiver aswell, as the behavior can be dependent on the type of listener

### Collaboration with External Companies

No, community resolution only

### Anything else?

_No response_

Contributor guide

Open the contributing guide

Research direction

Start by tracing pullingListeners such as MessageStoreListener and the current receiver/listener retry handling. Read how maxBackoffDelay and the transaction timeout constrain retries, then clarify whether the scope is a retryInterval attribute or a broader RetryStrategy. Done should provide independent polling and retry timing, with clear handling or a warning for incompatible transaction attributes.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.