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:
- NetMQ.FaultException @ NetMQ.Msg.Close()
- System.ArgumentOutOfRangeException @ NetMQ.Core.Patterns.Utils.ArrayExtensions.Swap[]
- System.IndexOutOfRangeException @ NetMQ.Core.Utils.YQueue`1[]/NetMQ.Core.Patterns.Utils.Trie.Check()
- System.Net.Sockets.SocketException @ NetMQ.Core.Mailbox.TryRecv()/NetMQ.Core.Mailbox.Send()
- System.NullReferenceException @ NetMQ.Core.Patterns.Utils.Trie.ApplyHelper()/NetMQ.Core.Patterns.Utils.Trie.Check()
- System.ObjectDisposedException @ NetMQ.Core.SocketBase.CheckDisposed()
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?