I’m developing an application that processes a real time data feed across the internet. There are 2 fundamentally different things I want to do with it: one extremely simple but critical that it never is interrupted. Another much more complex but interruption is not such a horrible problem. Given that the second would have higher risk of the application crashing due to its complexity… I’m asking if there is some way that both can be receiving the data feed at the same time?
I could have both functions in a single application but if it crashes, that’s very bad. I was thinking by separating the two functions into two applications, it might provide more robust handling for the critical simple processing.
But if I separate into two applications, is it possible for both of them to receive the identical data at the same time? Some type of OS networking voodoo or something?
It depends on the stream and on the way you want to implement it – some general ideas to achieve what you describe:
make a receiver app
this has the only purpose in receiving the feed and dispatching it to any apps/consumers who register to receive… if the receiving apps are on the same system you can use shared memory (MemoryMappedFile in .NET for example) which is really fast… this would help regarding future requirements – for example if you need to implement another processing app it just needs to register with the receiver app… another nice side-effect: the receiver app can capture the feed to some persistence and thus allow a “replay” for testing purposes etc.
make the “critical” one multiplex the feed
this would mean only your critical app receives the feed and sends a copy to the other app (for example on a different thread)