@@ -115,7 +115,6 @@ export class WebhookController extends EventController implements EventControlle
115115 const httpService = axios . create ( {
116116 baseURL,
117117 headers : webhookHeaders as Record < string , string > | undefined ,
118- timeout : webhookConfig . REQUEST ?. TIMEOUT_MS ?? 30000 ,
119118 } ) ;
120119
121120 await this . retryWebhookRequest ( httpService , webhookData , `${ origin } .sendData-Webhook` , baseURL , serverUrl ) ;
@@ -157,10 +156,7 @@ export class WebhookController extends EventController implements EventControlle
157156
158157 try {
159158 if ( regex . test ( globalURL ) ) {
160- const httpService = axios . create ( {
161- baseURL : globalURL ,
162- timeout : webhookConfig . REQUEST ?. TIMEOUT_MS ?? 30000 ,
163- } ) ;
159+ const httpService = axios . create ( { baseURL : globalURL } ) ;
164160
165161 await this . retryWebhookRequest (
166162 httpService ,
@@ -194,21 +190,12 @@ export class WebhookController extends EventController implements EventControlle
194190 origin : string ,
195191 baseURL : string ,
196192 serverUrl : string ,
197- maxRetries ?: number ,
198- delaySeconds ?: number ,
193+ maxRetries = 10 ,
194+ delaySeconds = 30 ,
199195 ) : Promise < void > {
200- // Obter configurações de retry das variáveis de ambiente
201- const webhookConfig = configService . get < Webhook > ( 'WEBHOOK' ) ;
202- const maxRetryAttempts = maxRetries ?? webhookConfig . RETRY ?. MAX_ATTEMPTS ?? 10 ;
203- const initialDelay = delaySeconds ?? webhookConfig . RETRY ?. INITIAL_DELAY_SECONDS ?? 5 ;
204- const useExponentialBackoff = webhookConfig . RETRY ?. USE_EXPONENTIAL_BACKOFF ?? true ;
205- const maxDelay = webhookConfig . RETRY ?. MAX_DELAY_SECONDS ?? 300 ;
206- const jitterFactor = webhookConfig . RETRY ?. JITTER_FACTOR ?? 0.2 ;
207- const nonRetryableStatusCodes = webhookConfig . RETRY ?. NON_RETRYABLE_STATUS_CODES ?? [ 400 , 401 , 403 , 404 , 422 ] ;
208-
209196 let attempts = 0 ;
210197
211- while ( attempts < maxRetryAttempts ) {
198+ while ( attempts < maxRetries ) {
212199 try {
213200 await httpService . post ( '' , webhookData ) ;
214201 if ( attempts > 0 ) {
@@ -222,58 +209,24 @@ export class WebhookController extends EventController implements EventControlle
222209 } catch ( error ) {
223210 attempts ++ ;
224211
225- // Verificar se é um erro de timeout
226- const isTimeout = error . code === 'ECONNABORTED' ;
227-
228- // Verificar se o erro não deve gerar retry com base no status code
229- if ( error ?. response ?. status && nonRetryableStatusCodes . includes ( error . response . status ) ) {
230- this . logger . error ( {
231- local : `${ origin } ` ,
232- message : `Erro não recuperável (${ error . response . status } ): ${ error ?. message } . Cancelando retentativas.` ,
233- statusCode : error ?. response ?. status ,
234- url : baseURL ,
235- server_url : serverUrl ,
236- } ) ;
237- throw error ;
238- }
239-
240212 this . logger . error ( {
241213 local : `${ origin } ` ,
242- message : `Tentativa ${ attempts } /${ maxRetryAttempts } falhou: ${ isTimeout ? 'Timeout da requisição' : error ?. message } ` ,
214+ message : `Tentativa ${ attempts } /${ maxRetries } falhou: ${ error ?. message } ` ,
243215 hostName : error ?. hostname ,
244216 syscall : error ?. syscall ,
245217 code : error ?. code ,
246- isTimeout,
247- statusCode : error ?. response ?. status ,
248218 error : error ?. errno ,
249219 stack : error ?. stack ,
250220 name : error ?. name ,
251221 url : baseURL ,
252222 server_url : serverUrl ,
253223 } ) ;
254224
255- if ( attempts === maxRetryAttempts ) {
225+ if ( attempts === maxRetries ) {
256226 throw error ;
257227 }
258228
259- // Cálculo do delay com backoff exponencial e jitter
260- let nextDelay = initialDelay ;
261- if ( useExponentialBackoff ) {
262- // Fórmula: initialDelay * (2^attempts) com limite máximo
263- nextDelay = Math . min ( initialDelay * Math . pow ( 2 , attempts - 1 ) , maxDelay ) ;
264-
265- // Adicionar jitter para evitar "thundering herd"
266- const jitter = nextDelay * jitterFactor * ( Math . random ( ) * 2 - 1 ) ;
267- nextDelay = Math . max ( initialDelay , nextDelay + jitter ) ;
268- }
269-
270- this . logger . log ( {
271- local : `${ origin } ` ,
272- message : `Aguardando ${ nextDelay . toFixed ( 1 ) } segundos antes da próxima tentativa` ,
273- url : baseURL ,
274- } ) ;
275-
276- await new Promise ( ( resolve ) => setTimeout ( resolve , nextDelay * 1000 ) ) ;
229+ await new Promise ( ( resolve ) => setTimeout ( resolve , delaySeconds * 1000 ) ) ;
277230 }
278231 }
279232 }
0 commit comments