Hi all,
I’m interested in your thoughts on this matter. Our current workaround does not ensure guaranteed delivery, so we risk losing messages.
Use Case
How can we eliminate duplicate events with Solace from applications that generate lots of granular events?
What it solves
-
Reduce unnecessary process executions (overhead).
-
Decrease the number of subscriber callbacks to source applications that have strict API limits.
Example
Microsoft ERP platforms can produce up to 10 events for the same item when updating a single inventory entry. In this scenario, you receive one event per table rather than a single “business event” per item.
Our initial recommendation was to implement deduplication logic on the application side. However, this option is often not feasible with cloud applications due to limited customization options. Moreover, some clients may reject this approach, seeing it as an integration issue rather than a problem related to the application itself.
Current Workaround
- Boomi Process 1 (Scheduled)
- Utilize the Boomi GET operation with a batch size of 1,000 messages to consume from the queue
- Sort the events in memory by ID and remove duplicates.
- Send the deduplicated events to a Solace queue.
- Guaranteed delivery: No; messages will be lost if the Boomi process crashes.
- Boomi Process 2 (Real-Time Listener)
- Use the Boomi LISTEN operation with a batch size of 1 message to consume and process from the queue
- Guaranteed delivery: Yes
Remarks
- We attempted a “browse-only” GET operation and manually acknowledged the events; however, the Boomi PubSub+ connector does not technically support this functionality.
- The question arises: Why doesn’t the Boomi GET operation function the same way as the Boomi LISTEN operation? For instance, a listener can retrieve a maximum of 1,000 messages per execution from the queue, and the Solace connector acknowledges them once the process has been completed.