Wdrażamy obsługę śledzenia zdarzeń Mailgun w naszej aplikacji. Zapoznaliśmy się z proponowaną wersją event polling algorithm, ale nie jesteśmy do końca z nią zadowoleni. Po pierwsze, wolimy nie odrzucać danych, które już pobraliśmy, a następnie spróbować ponownie od zera po przerwie. Nie jest bardzo wydajny i pozostawia otwarte drzwi na długą pętlę prób, ponieważ nie jest jasne, kiedy pętla ma się skończyć. Po drugie, "wiek progowy" wydaje się kluczem do określenia "wiarygodności", ale jego wartość nie jest zdefiniowana, sugeruje się tylko bardzo duże "pół godziny".Mailgun: algorytm do odpytywania zdarzeń
Rozumiemy, że zdarzenia stają się "godne zaufania" po pewnym opóźnieniu progowym, nazwijmy to D_max
, gdy zdarzenia gwarantują, że będą się znajdować w pamięci zdarzeń. Jeśli tak, możemy wdrożyć ten algorytm w inny sposób, abyśmy nie pobierać danych, o których wiemy, że nie są "wiarygodni" i wykorzystują wszystkie pobrane dane.
Bylibyśmy pobierania danych okresowo, a na każdej iteracji Chcielibyśmy:
- Złóż zapytanie do API zdarzeń określając zakres czasowy rosnąco od
T_1
doT_2 = now() - D_max
. W przypadku pierwszej iteracji można ustawić czas do pewnego czasu w przeszłości, np. Pół godziny temu. Dla kolejnych iteracjiT_1
jest ustawiana na wartośćT_2
z poprzedniej iteracji. - Wszystkie strony są przesyłane jeden po drugim, gdy zwracany jest adres URL następnej strony.
- Użyj wszystkich przyjętych zdarzeń, ponieważ wszystkie one są "godne zaufania".
Moje pytania są następujące:
- Q1: Czy są jakieś problemy z tym podejściem?
- Q2: Jaka jest minimalna realistyczna wartość
D_max
? Oczywiście możemy użyć do tego "pół godziny", ale chcielibyśmy być bardziej zwinni w śledzeniu zdarzeń, więc byłoby świetnie wiedzieć, jaka jest minimalna wartość, na jaką możemy ją ustawić i nadal niezawodnie pobierać wszystkie zdarzenia.
Dzięki!