Skip to content

Maintaining order in FIFO queues #313

@ghost

Description

Hi @JaidenAshmore ,

Great work on this library, it is very well done.

I was wondering if you have worked on any solutions for FIFO queues? Basically we would like to process all messages that were pulled in order, so the current concurrency does not work as it breaks the order of the messages.

For example:

    @PrefetchingQueueListener(
            value = "${sqs.queue}",
            concurrencyLevelString = "10",
            desiredMinPrefetchedMessages = 10,
            maxPrefetchedMessages = 20)
    public void processSQS(Message message, Acknowledge ack) {

This code, If I understood everything correctly, will grab 10 messages and distributes those 10 into the 10 concurrency threads, which would break the ordering.

Would it be possible to have something like:

    @PrefetchingQueueListener(
            value = "${sqs.queue}",
            concurrencyLevelString = "10",
            desiredMinPrefetchedMessages = 10,
            maxPrefetchedMessages = 20)
    public void processSQS(List<Message> messages, Acknowledge ack) {

So this would grab 10 messages from the queue and pass those on to be processed as a group, maintaining the order. Not sure how the Acknowledge would work on this case, if it should be per message or per batch.

Again, thank you for the great work.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions