BroadJRadical:Instinct is an event based behavior integration Framework that can help developers to use channel based integration approach to integrate behaviors of different objects. In addition to ease of integrating behaviors BroadJRadical:Instinct also provides the feature to mark this integration Synchronous/Asynchronous, hence flexibility to switch between single-thread or multi-thread integration approach along with chaining the integration. The framework is influenced by the "Queueing" concepts.
Benefits of event based behavior integration are visible while implementing producer/consumer paradigm where multi-step behavior execution might require some direct/synchronous (that are to be carried under same operation) invocations and some as asynchronous back-end invocations (that are not very critical to be carried out in same operation). Each integration can be marked as "Synchronous" for single-thread invocation, but for multiple there are following ways :
a. MPC: This feature supports multiple producers and multiple consumers on same channel, hence a user can configure the framework to have single thread or pool of threads to manage multiple join points.
b. SPC: This feature supports single producers and single consumers on the configured channel. Due to the nature of single I/O access to the channel the performance is highest among all thread behaviors.
c. MPSC: Can be used in case the user wants to have single stateful consumer to multiple event publishers.
d. SPMC: This feature can be opted in case the consumers have to support multiple behavior, hence can configure multiple concurrent consumers to a single producer.
e. MPCS: "Multiple Producer Multiple Consumer Shared" features one shared pool for multiple channel, indifferent from "MPC" where every channel has its own pool of task buffer, and thread pool.
Note: In case of SPC, throughput can be very high, hence it's use is advised, but having multiple SPC channels is not, as the framework maintains 1 thread per channel configured. In every feature overall throughput of the application will be analogous to the consumer's performance, as in case of asynchronous configuration, if a task takes long time to evict from the system then the buffer will push back the publishers after the buffer limit is reached.
Further more Framework supports wait strategy of events in the event pool and event transformation for flexible integration. Refer to the example snippets provided
"Instinct-0.0.4-BETA-Experimental" is now available for download, currently under development/maintenance phase.
A new project has been created for public access to all users, for creating issues, adding snippets, adding request to be a contributor and viewing milestones, activities at : https://gitlab.com/BroadJRadical/Instinct_All
To get further information and updates for BroadJRadical:Instinct please follow the blogs published under : http://blog.broadjradical.net.in