For the very first post I am going to introduce a framework of mine based on webMethods Integration Server: reactiveWM.
In a nutshell this framework extends standard webMethods capabilities in terms of multithreading. It will allow to create native webMethods threads within the Integration Server thread pool (just like Service.doThreadInvoke()) but the main difference is the capability to create your own logical pools to prevent potential side effects.
Let’s imagine a service creating 10 threads per execution. If this very service is called 20 times at once, it will create 200 threads. The only limit is the IS service thread pool and if this limit is reached, the IS will simply freeze and impact the other services.
With reactiveWM, a developer can simply create his own logical thread pool and set a limit. Then the parallelization will be executed within this pool to make sure it will not introduce any side effects and provide a guarantee in terms of security.
Why is this framework reactive by the way? It is simply because reactiveWM provides non-blocking services. This way you can submit to a thread pool some tasks (either Flow or Java services) and get a return directly. The execution is then managed in the background by the framework (basically behind the main execution thread).
The developer can also create asynchronous execution chains by implementing dynamic callbacks depending on the status of the previous task.
Several other capabilities have been developed such as timeout management (not taken into account with the webMethods API), a failfast mechanism (if at least one thread fails, the parallelization is stopped), a solution to create pool hierarchy to ease the governance, an atomicity mechanism to guarantee at most one execution chain etc…
If you need more information, see the code or give reactiveWM a try, please visit the Github project.
By the way, if you want more information about what is reactive programming, you should read this great post: The introduction to Reactive Programming you’ve been missing.