I’ve spoken in many previous posts about Mux and Channel Management in the jPOS framework (search my blog for ‘channel manager’ to get a flavor of some of these pieces). In one recent situation, I might have done too good a job getting excited about how it works, most notably the ability of the mux to dynamically remove disconnected or non-reachable destinations from its pool of [nearly] round-robin candidates...and its corresponding ability to dynamically and seamlessly re-add those channels back to the mix once proper communication is re-established.
My “too good a job” came in not explaining to our customer that these dynamic undeployments of channels were part and parcel only of persistently connected channels. When it comes to their non-persistent – or what we call one-shot – brethren, well, these channels are by their very definition not connected. So, the dynamic aspects that I adore so much play no role. How do you know you can’t connect if you’re by nature not connected? Each new transaction will try anew and discover what the last transaction discovered (historically, one of the many reasons we prefer persistent connections if the option is available).
But it was more than fair for our customer to say, hey, maybe you could devise some type of mechanical equivalent for one-shots. In response, OLS’ CTO Dave Bergert devised the idea of the One-Shot Watchdog...a component that asynchronously monitors each of the channels in a Mux and – upon determining that one or more of them is non-functioning – moves the offending channel out of the deploy directory to an ‘undeploy’ directory. QMUX reacts perfectly to that and starts – with immediate effect – to redistribute the traffic to the remaining channels.
One of OLS’ engineers Murtuza Chhil – a true payment industry expert (who we’re thrilled has joined our team!) – implemented this feature in a nice clean manner. In this video, he’s done a nice five-minute Screencast showing the ‘OSWD’ in action. That’s his ‘undeploy’ dir on the left, the ‘deploy’ dir on the right.