Author: sergiykarpenko
Date: 2010-07-26 10:07:57 -0400 (Mon, 26 Jul 2010)
New Revision: 2813
Added:
jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel/listener-service.xml
Modified:
jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel.xml
Log:
EXOJCR-311: Topic about asynch event broadcasting added
Added:
jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel/listener-service.xml
===================================================================
---
jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel/listener-service.xml
(rev 0)
+++
jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel/listener-service.xml 2010-07-26
14:07:57 UTC (rev 2813)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="ch_listener_service">
+ <?dbhtml filename="ch-listener-service.html"?>
+
+ <title>ListenerService</title>
+
+ <section>
+ <title>Asynchronous Event Broadcast</title>
+
+ <para>Basicaly, ListenerService used to store Listeners and broadcast
+ events to them.</para>
+
+ <para>ListenerService event broadcasting works in next way - it takes a
+ destination listeners and executes event on those listeners.</para>
+
+ <para>But, some events may take a lot of time, so idea to make event
+ processing asynchronous is usefull.</para>
+
+ <blockquote>
+ What do I need to make my listener asynchronous?
+ </blockquote>
+
+ <para>- It's very simple, just mark your Listener implementation as
+ <classname>(a)Asynchronous</classname>.</para>
+
+ <programlisting>@Asynchronous
+class AsynchListenerWithException<S,D> extends Listener<S,D>
+{
+ @Override
+ public void onEvent(Event<S,D> event) throws Exception
+ {
+ // some expensive operation
+ }
+}</programlisting>
+
+ <para>Now, our AsynchListener will be executed in separate thread by
+ <classname>ExecutorService</classname>.</para>
+
+ <para>By default, <classname>ExecutoreService</classname>
configured with
+ thread pool size 1, you can change it in configuration:<programlisting>
<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></programlisting></para>
+ </section>
+</chapter>
Modified: jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel.xml
===================================================================
--- jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel.xml 2010-07-26
13:21:09 UTC (rev 2812)
+++ jcr/trunk/docs/reference/en/src/main/docbook/en-US/modules/kernel.xml 2010-07-26
14:07:57 UTC (rev 2813)
@@ -18,6 +18,9 @@
<xi:include href="kernel/transaction-service.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="kernel/listener-service.xml"
+
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
<xi:include href="kernel/jndi-naming.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />