JBoss.orgCommunity Documentation
Basicaly, ListenerService used to store Listeners and broadcast events to them.
ListenerService event broadcasting works in next way - it takes a destination listeners and executes event on those listeners.
But, some events may take a lot of time, so idea to make event processing asynchronous is usefull.
What do I need to make my listener asynchronous?
- It's very simple, just mark your Listener implementation as
@Asynchronous
.
@Asynchronous class AsynchListenerWithException<S,D> extends Listener<S,D> { @Override public void onEvent(Event<S,D> event) throws Exception { // some expensive operation } }
Now, our AsynchListener will be executed in separate thread by
ExecutorService
.
By default, ExecutoreService
configured with
thread pool size 1, you can change it in configuration:
<component> <key>org.exoplatform.services.listener.ListenerService</key> <type>org.exoplatform.services.listener.ListenerService</type> <init-params> <value-param> <name>asynchPoolSize</name> <value>5</value> </value-param> </init-params> </component>