snowplow / snowplow-scala-tracker

Snowplow event tracker for Scala. Add analytics to your Scala, Akka and Play apps and servers
http://snowplowanalytics.com
8 stars 14 forks source link

Add ADT for retry policy on failed http requests #144

Closed istreeter closed 3 years ago

istreeter commented 3 years ago

Users should be able to choose different retry strategies if a http request fails. The following policies should be availble:

RetryForever

No cap on maximum of attempts to send an event to the collector.

This policy might appear attractive where it is critical to avoid data loss, because it never deliberately drops events. However, it could cause a backlog of events in the buffered queue if the collector is unavailable for too long.

MaxAttempts

Drop events after failing to contact the collector within a fixed number of attempts

This policy can smooth over short outages of connection to the collector. Events will be dropped only if the collector is unreachable for a relatively long span of time. Dropping events can be a safety mechanism against a growing backlog of unsent events.

NoRetry

This is equivalent to MaxAttempts(1). It might be appropriate for snowplow pipelines using real-time event processing, for which late events are worthless.