Is there a good lightweight framework for java that provides the publish/subscribe pattern?
Some ideal features
- Support for generics
- Registration of multiple subscribers to a publisher
- API primarily interfaces and some useful implementations
- purely in-memory, persistence and transaction guarantees not required.
I know about JMS but that is overkill for my need. The publish/subscribed data are the result of scans of a file system, with scan results being fed to another component for processing, which are then processed before being fed to another and so on.
EDIT: All within the same process. PropertyChangeListener from beans doesn't quite cut it, since it's reporting changes on properties, rather than publishing specific items. I could shoehorn ProprtyChangeListener to work by having a "last published object" property, and so published objects. PropertyChangeListeners don't support generics, and are entrenched in property change semantics, rather than pure publish/subscribe. The java.util Observer/Observable pattern would be good, but Oberver is a concrete class.