I am designing a basket abandoning system for an Ecommerce company. The system will send a message to a user based on the below rules:
- There is no interaction by the user on the site for 30 minutes.
- Has added more than $50 worth of products to the basket.
- Has not yet completed a transaction.
I use Google Cloud Dataflow to process the data and decide if a message should be sent. I have couple of options in below:
- Use a Sliding window with a duration of 30 minutes.
- A global window with a time based trigger with a delay of 30 minutes.
I think Sliding Window might work here. But my question is, can there be a solution based on using a global window with a processing time based trigger and a delay for this usecase? As far as i understand the triggers based on Apache Beam documentation => Triggers allow Beam to emit early results, before a given window is closed. For example, emitting after a certain amount of time elapses, or after a certain number of elements arrives. Triggers allow processing late data by triggering after the event time watermark passes the end of the window.
So, for my use case and as per the above trigger concepts, i don't think the trigger can be triggered after a set delay for each and every user (It is mentioned in above - can emit only after a certain number of elements it is mentioned above, but not sure if that could be 1). Can you confirm?