That's clearer. You aren't running command-line apps, a program is running them itself as the equivalent of events / notifications.
If you can control what apps are run (telling the enterprise app to run MyEventHandler.exe instead of the EventHandler.exe it runs now) then your MyEventHandlerExe can do almost anything to notify a second, always-running management application about the event.
It can post messages to the management app, and/or it can write files to a special folder. It can skip doing any processing itself, relying on the management app to do (whatever).
If you give a more concrete example of a workflow, with more detail than just (something happens when a ticket is created), then we can probably offer more detailed suggestions.
Also list the platform (Windows? linux?). It might even make sense to use an existing transaction framework.
Sweet, now we're on the same page
I'm looking for a solution that works on Windows/Unix/Linux.
A more concrete example of what I am doing: I have various enterprise apps that need to make a call to another application using a SOAP interface. These various enterprise apps (such as ticketing, event management) can make command line calls in response to activities that happen in those apps (such as the opening of a ticket or the receipt of an event). They then need to make a command line which will be converted and sent over as a SOAP request (this part I have today).
There are a couple of problems with the basic approach today. First, there is no retry mechanism. So if you can't get to the web service interface (app is down, network issues, etc), then the request never goes through. Second, in the case that there is an app down or network issue situation, I expect that a large number of requests will get queued up. Once the issue is resolved, I don't want all those requests to be launched at the web service interface all at one time. It will choke that app. So I want to build a throttling mechanism to gradually process the buffer of requests.
Sounds like a message processing application to me, i.e. something that could be built on MQ, or whatever Microsoft's equivalent is, or perhaps Windows Workflow Foundation. I think you're focusing too much on the means of sending the message (a command line app) in your description. You've got a bunch of disparate apps running in various places, and when certain things happen you want them to respond by sending a message to a central processor that will act on it, log the outcome, whatever. The means of sending the message might vary with circumstances, and you have lots of options to handle different scenarios. You could have the event trigger a command line program as mentioned. You could run an agent local to the process that generates the event and have them use a named pipe, memory-mapped file, raw socket, etc., to communicate. You could run an http server that receives messages from some set of apps and then forwards the message to the processor. Or you could give the processor itself an http interface. There are literally thousands of possible architectures.
I think you have some experience on this front
This is pretty much new to me. In a past life, I was a embedded software engineer who also lightly dabbled in client/server apps (emphasis on lightly

). And I've been away from that for years. So now getting into Java based message processing application is like learning from scratch. I've done raw sockets before and would use that as a fallback, but I figured there may be a better way and possible an existing framework to build on.
Thanks guys