Current Release:
Version : broadjradical:instinct-0.0.5-BETA
Major features this version includes:
InstinctThreadBehavior.SYNCHRONOUS
: for single-threaded behavior integration.InstinctThreadBehavior.MPC:
for multi-threaded integration with multiple producers and a single consumer.InstinctThreadBehavior.SPC
: Single producer and a single consumer.InstinctThreadBehavior.MPSC
: Multiple producers and a single consumer.InstinctThreadBehavior.SPMC
: Single producer and multiple consumers.InstinctThreadBehavior.MPCS
: Multiple producers and multiple consumers with one shared thread pool.Features under development:
As part of continuous development there are some milestones set for recent releases, some are already covered in the current release and some are planned to be included soon under same SNAPSHOT version, ones planned for the next releases are given below, and any completed milestone will be marked 'italic' when complete. Also, new planned features will be added to the points below replacing old releases.
1. Event Transformation for Publish method:
If publish method return type and subscriber parameter type are not same then, the user will have provision to configure Event Transformers respective to every channel configured on publish method.
2. Event Filter for Subscriber:
Subscribers can be configured with Event filter implementation to validate and skip events. This is supported via an annotation attribute "eventFilter" for simple or complex filter behavior, in a case when simple filter declaration is required then instead of defining a complete implementation you can also use @ELFilter for expression language definition. This uses Apache JExl, hence be sure where to use this as it is good in performance but heavy on memory.
3. Exception handling for publisher method:
If a Runtime Exception is raised from Publisher it will be gracefully handled and propagated to exception handler configured by the user in "@Publish".
4. Event Chaining:
@Publish and @Subscribe can be used in combination to create an event chain.
5. Null safe publisher:
If there is a possibility of returning null from publish method, the user has the freedom to configure @publish method with "nullSafe" attribute, also if the @Subscriber method is expecting null input, then @publish method can be marked unsafe with the same attribute set to false.
6. Point to Point publish:
If there are multiple subscribers to one channel, then instead of default broadcast behavior, the user will have an option to configure P-to-P communication mode for event dispatch. This feature is currently planned for the next release.
7. Bean Factory support:
If Publishers and Subscribers do not have default constructors then they can be annotated with @BeanFactory and @FactoryMethod annotations to provide bean factory class to instantiate them. Annotations support factories that implement singleton pattern, or static factory method access or simple new instance access to get beans.
8. JExl Engine enhancement:
JExl engine is heavy on memory, and currently, it's implementation is done to provide fast execution. Need to implement for efficient memory usage. (TODO)
9. Minor Bug fixes: