Hi Team,
I’m looking for guidance on configuring Solace Advanced Event Mesh to achieve strict FIFO processing in our integration scenario.
Current Architecture
Our message flow is as follows:
SAP S/4HANA → Solace Advanced Event Mesh Queue → SAP BTP Integration Suite → Data Lake
*SAP S/4HANA generates business events using Event Enablement Addon.
* The events are published to a SAP Advanced Event Mesh queue.
* SAP BTP Integration Suite consumes the events from the queue, performs the required transformations, and sends them to a downstream Data Lake.
Current Queue Configuration
We are currently using:
*Non-exclusive queue
* No partitioning
* A single queue for all events
Current Scenario
Assume there are 10 messages in the queue.
*Message 1 is processed successfully.
* While processing Message 2, the downstream Data Lake becomes unavailable due to a temporary connectivity issue.
* Since the downstream system is unavailable, Message 2 cannot be delivered successfully.
* However, the Integration Suite continues consuming Messages 3 through 10 from the queue. These messages also fail because the downstream system is still unavailable.
As a result, all subsequent messages are consumed even though the earlier message has not been successfully processed or end up with the same error(which is unnecassary).
Desired Behavior
Our requirement is to maintain strict FIFO processing.
If Message 2 fails because the downstream system is unavailable:
* Message 2 should remain the current message and should be retried once the downstream system becomes available.
* Messages 3 through 10 should remain in the queue and should not be consumed until Message 2 has been successfully processed.
* Once Message 2 succeeds, Message 3 should be processed, followed by Message 4, and so on, preserving strict FIFO order.
In other words, we want a failure on one message to block the processing of all subsequent messages until the failed message has been successfully processed.
Any guidance or recommendations would be greatly appreciated.
Thank you!