-
Notifications
You must be signed in to change notification settings - Fork 146
Description
Currently entries of the publisher queue are strictly handled by FIFO. This is reflected in the findDataByPublisherIdAndStatus which use the select
SELECT a FROM PublisherQueueData a WHERE a.publisherId=:publisherId AND a.publishStatus=:publishStatus ORDER BY a.timeCreated DESC
to get data. This means that newest entries are returned first.
Now if you have 10 or more "new" entries in your queue which cannot be published no "older" entry will ever be published using the queue since shouldBreakPublishingOperation in PublisherResult will always fail after the first 10 entries.
My suggestion now is to honor the trycounter in the select and try to publish entries with lower trycounter first. This would lead to a select like
SELECT a FROM PublisherQueueData a WHERE a.publisherId=:publisherId AND a.publishStatus=:publishStatus ORDER BY a.tryCounter, a.timeCreated DESC
This would allow to publish entries with lower trycounter first and do not stall the queue if the newest 10 entries are failing.