Estoy usando NetMQ para comunicaciones cliente/servidor para un sistema de precios usando Pub/Sub para datos de precios y Req/Res para C&C. Funciona muy bien, excepto que veo excepciones aleatorias e irreproducibles que ocurren en las entrañas de la biblioteca de NetMQ.
Actualmente estoy usando NetMQ v4.0.1.6 en una pila .Net v4.7.2 en Windows Server 2008R2/20012R2.
Las excepciones incluyen:
y todos están sucediendo dentro de NetMQ.NetMQPoller.RunPoller() o NetMQ.Core.Utils.Proactor.Loop() y no sé cómo detectarlos y mitigarlos.
¿Cuál es el enfoque correcto para fortalecer un servicio/aplicación usando NetMQ para evitar que tales excepciones detengan el servicio?
Hice esto profesionalmente, y con gran éxito, en una gran organización.
La mejor práctica es incluir dentro de su bucle un controlador de captura de prueba y luego hacer algo como lo siguiente
(Ejemplos de tipos de error extraídos de su lista al azar)
/*loop*/(/*loop condition*/) { try { // processing } catch (NetMQ.FaultException $exception) { // specific error handling } catch (System.ObjectDisposedException $exception) { // specific error handling } catch (Exception $exception) { // generic error handling } }Además, siéntase libre de pasarle una clase/servicio de manejo de errores específico para descargar su funcionalidad de manejo de errores en una ubicación separada (mayor capacidad de prueba).