[ https://issues.apache.org/jira/browse/JAMES-3711?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benoit Tellier closed JAMES-3711. --------------------------------- Fix Version/s: 3.7.0 Resolution: Fixed > Have a Requeue mailet that could be use in combinason with rate limiter to > build a naive throttler > -------------------------------------------------------------------------------------------------- > > Key: JAMES-3711 > URL: https://issues.apache.org/jira/browse/JAMES-3711 > Project: James Server > Issue Type: Bug > Components: Mailet Contributions > Reporter: Benoit Tellier > Priority: Major > Fix For: 3.7.0 > > Time Spent: 2h 20m > Remaining Estimate: 0h > > - Requeue mailet allows specifying: > - a Mail Queue name (optional, default to spool) > - a target processor (optional, defaults to root) > - a delay (optional, defaults to none) > Eg: > {code:java} > <mailet matcher="All" class="Requeue"> > <queue>spool</spool> > <processor>transport</processor> > <delay>2h</delay> > </mailet> > {code} > This is a generic enough functionality that I think it can make sense by > itself. > Combined with rate limiting mailet, it allows for a (very basic) throtler: > smooth the traffic to the expected rate. Note that this is a naive approach: > if you have a large amout of emails (say N) submitted at once, you would need > O(N) requeues to eventually send all your mails, where the constant is the > number of mail allowed over the time window. So this gives an overall > complexity of O(N2), while careful planning could achieve this in O(N). > Eg: throttle senders to 10 mails per hour, smoothing the traffic as required. > {code:java} > <processor name="root"> > <mailet matcher="All" class="PerSenderRateLimit"> > <redisURL>redis://localhost:6379</redisURL> > <keyPrefix>myPrefix</keyPrefix> > <duration>1h</duration> > <count>10</count> > </mailet> > <!-- Go to transport for instance --> > </processor> > <processor name="root"> > <mailet matcher="All" class="Requeue"> > <queue>spool</spool> > <processor>root</processor> > <delay>1h</delay> > </mailet> > </processor> > {code} > *TODO:* > - [ ] Write the JIRA ticket for throttling > - [ ] Write the Requeue mailet (`server/mailet/mailets`) > - [ ] And finally provide documentation and config samples for this naive > throttler -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org