Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 22130|Respuesta: 3

[Frame] . Resiliencia de .NET y gestión de fallos transitorios Estrategia de reintentos de Polly

[Copiar enlace]
Publicado en 28/5/2019 23:54:53 | | | |
Esta publicación fue editada por última vez por Kongcida el 29-5-2019 a las 11:16

prefacio
En un proyecto, habrá problemas con el funcionamiento del proyecto debido a razones incontrolables. Por ejemplo, un fallo de servidor, un fallo de servicio, una caída de red, etc. Si encontramos algunos errores reprobables, podemos usar Polly —— . .NET Bibliotecas de Manejo de Fallos Elásticos y Transitorios. Dirección oficial del proyecto (El inicio de sesión del hipervínculo es visible.)。 Hoy este artículo documentará la mala estrategia de reintentos de Polly.


Entorno y herramientas


>VS 2017
>Sistema Windows 10


Mensaje de texto


1: Crear una nueva aplicación para consola.

2: Cita a Polly. Disponible para descargar en el paquete NuGet

3: Pegar el código



4: F6 genera. Luego busca el archivo de .exe generado en la carpeta de depuración > haz doble clic para ejecutar.



Puedes ver el mensaje de salida: Lo he intentado repetidamente tres veces.

Cuando F5 está depurando, también puedes ver que este método se ha hecho tres veces.


La estrategia de reintento de Polly se explica en detalle

1: Tipo de excepción


En este código, el :handle contiene el tipo de excepción que se va a intentar de nuevo. Es decir, cuando el código ejecutado produce una excepción específica, se ejecuta la función de reintento. De lo contrario, no se realizará ningún intento de nuevo. Porque algunas excepciones no requieren un nuevo intento.

Por supuesto, podemos rellenar varios tipos específicos de excepciones aquí para volver a intentarlo.



La DivideByZeroException aquí representa una excepción que intenta dividir por cero.
SqlException indica una excepción que se activa cuando SqlServer devuelve un error o advertencia. Por ejemplo, fallo en la conexión a la base de datos, error de ejecución SQL, etc.
SmtpException indica una excepción planteada por el servicio postal. Por ejemplo, falló el envío, falló la conexión de red y la información de la cuenta de correo electrónico fue anormal.

Para tipos específicos de excepciones, consulte la documentación oficial de Microsoft:



2: Tipo de reintento

1) El primer tipo de intento es un número directo dado de intentos. El siguiente código solo se vuelve a probar 3 veces.

Podemos llamar las acciones relevantes realizadas en cada intento al intentarlo de nuevo. El siguiente código es otro encargo posterior. Al realizar un intento de nuevo, se imprimen el número de intentos y el motivo de la excepción.



También podemos mantener el código intentándolo hasta que tenga éxito.



2) El segundo tipo de reintento es intentarlo a intervalos. El siguiente código significa intentarlo de nuevo cada 2 segundos, 7 segundos o 10 segundos. Vuelve a intentarlo a 10 segundos. Si la ejecución no tiene éxito, termina el intento de nuevo.



También podemos intentarlo de nuevo a intervalos hasta que el intento sea exitoso. Esto requiere el cálculo de una función.



El código anterior se refiere a la retentación de potencia de la indirecta 2. Por ejemplo, si la ejecución falla, la primera vez se intentará de nuevo con intervalos de 2 segundos, la segunda se intentará a intervalos de 4 segundos y la tercera vez se intentará a intervalos de 8 segundos......... Y así sucesivamente. Hasta que la ejecución sea exitosa.



Epílogo


Nota: Los tipos de excepción en el código Handle anterior deben completarse según la situación real en tu proyecto. No todas las excepciones requieren un nuevo intento.

El tipo de excepción es la clase base para todas las excepciones. Es mejor no rellenar esto en el mango, porque de lo contrario tendrá consecuencias muy graves.














Anterior:. El valor de devolución de PayPal IPN con integración de red siempre ha sido INVÁLIDO
Próximo:C# Uso de palabras clave de rendimiento
Publicado en 29/5/2019 9:17:54 |
Yo mismo implementé el mecanismo de reintento en AOP y, al final, descubrí que la biblioteca Polly puede cubrir mis necesidades, pero mi función ya está implementada, y me refiero a una biblioteca de terceros, que puede tener código inútil y que no puede optimizar mi sistema, así que no es útil por el momento.

Adjunto está mi código:



Cuando tenga tiempo, también investigaré sobre Polly
Publicado en 29/5/2019 9:22:01 |
Xiao Zhaozha Publicado el 29-5-2019 09:17
Implementé yo mismo el mecanismo de reintento en AOP y, al final, descubrí que la biblioteca Polly podía cubrir mis necesidades, pero mi función ya ha sido implementada, y la introducción ...

No hay nada de malo en hacer pequeñas necesidades como esta tú mismo
Y deberías esperar a la próxima vez para volver a intentarlo
Publicado en 29/5/2019 9:29:22 |
Winds publicado el 29-5-2019 09:22
No hay nada de malo en hacer pequeñas necesidades como esta tú mismo
¿Y deberías esperar a la próxima vez para intentarlo de nuevo?

No, la excepción debe ser causada por conflictos de concurrencia, inserción de datos, actualización y eliminación, pero debe haber uno que se ejecute correctamente, ....... El código omitido envuelve la transacción y la excepción se revierte automáticamente. En el segundo intento, el conflicto desaparece, así que no puse tiempo de espera.
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com