I'm using NetMQ for client/server comms for a pricing system using Pub/Sub for price data and Req/Res for C&C. It's working very well except that I'm seeing random and unreproducible exceptions occurring in the bowels of the NetMQ library.
I'm currently using NetMQ v4.0.1.6 on a .Net v4.7.2 stack on Windows Server 2008R2/20012R2.
The exceptions include:
and are all happening within either the NetMQ.NetMQPoller.RunPoller() or NetMQ.Core.Utils.Proactor.Loop() and I'm at a loss as to how to catch and mitigate them.
What is the correct approach to harden a service/app using NetMQ to prevent such exceptions bringing down the service?
I did this professionally, and with great success, at one large organisation.
The best practice is to include within your loop a try catch handler, and then do something like follows
(Example error types plucked from your list at random)
/*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
}
}
Also, feel free to pass it a specific error handling class/service to offload your error handling functionality into a separate location (greater testability).