Currently I'm designing and prototyping an integration application that routes messages between other applications. In addition to transferring messages between applications, it can perform processing tasks to retrieve, set, or generate information and transform messages from one type to another.

At its core, the application is multi-threaded so that it can process multiple messages simultaneously. Although it won't be used initially, the design also allows the same message to be run through multiple, independent, processes simultaneously.