We are looking for a message queuing system that ensures the sequential processing of messages based on their row numbers.
This seems like a foundational part of computing - but we seem unable to find it.
Here's what we mean.
PUSH/POP: Adding and removing items from a list is common in code (push/pop). These methods typically ensure every item is processed once-and-only-once ("exactly once processing") and in-order (ordinality).
Finding this as a cloud service has seemed elusive.
GOOGLE: We were told by Google reps that Pub/Sub can guarantee items from a list are emitted in order and once-and-only-once but cannot guarantee that the items you added to the list were added in the order you expected. (The internet can be slow - or drop an item - and the order can be lost.)
APACHE: Kafka, as we were also told, cannot guarantee exactly once processing with ordinality.
The result is that both seemed to be partially implemented push/pop capability.
Does any such Cloud Message Queuing service exist? Or is this simply something we will have to write ourselves?
This seems so basic and fundamental to queue processing that we are surprised if it doesn't exist.
Example Background
Let’s say I have five messages labeled with row numbers one through five, but they may arrive at the message queue out of order. For example, a message with row number 3 might arrive before the one with row number 2. The message queue should forward the messages to the service in ascending order based on their row numbers. Additionally, if there is a delay or error causing a row number to be missing, we want the queue to pause processing until the missing message arrives before sending the subsequent messages to the service. Is there really no suitable message queuing system for this requirement?