Come gestire il timeout dell'API di sistema di terze parti

3

nella mia azienda stiamo utilizzando diversi sistemi di terze parti, ad esempio:

  • un CRM, dove sincronizziamo le informazioni sul cliente; l'obiettivo è avere una sincronizzazione 1: 1.
  • un sistema di posta elettronica transazionale, con il quale possiamo inviare e-mail al cliente.

Al momento stiamo avendo diversi timeout, perché questi sistemi hanno una soglia fissa di richieste al secondo.

Come gestiamo questi timeout? Ad esempio, abbiamo archiviato le email che non possiamo inviare nel nostro DB e una funzione programmata le ha recuperate e ho provato a inviarle di nuovo.

Abbiamo provato anche a utilizzare un RateLimiter , ma questo non funzionerà correttamente se proverai a scalare più istanze dell'applicazione.

Ma esiste un modo corretto per gestire questi errori? Sembra un problema molto comune, forse c'è un modello da considerare. Questi sistemi non supportano lo streaming o l'API di massa.

    
posta lmarx 08.10.2018 - 11:49
fonte

1 risposta

1

Considera l'implementazione di un Interruttore automatico che troverà quando una terza parte è disponibile per riprovare la richiesta:

Assume that an application connects to a database 100 times per second and the database fails. The application designer does not want to have the same error reoccur constantly. They also want to handle the error quickly and gracefully without waiting for TCP connection timeout.

Generally Circuit Breaker can be used to check the availability of an external service. An external service can be a database server or a web service used by the application.

Circuit breaker detects failures and prevents the application from trying to perform the action that is doomed to fail (until it's safe to retry).

    
risposta data 08.10.2018 - 15:47
fonte

Leggi altre domande sui tag