Applications often require sending recurring or timed notifications. This can be done by creating a timer component that has a producer connected to a channel:
Code Block | ||||
---|---|---|---|---|
| ||||
public class SomeTimer implements Runnable { @Producer(target="SomeChannel") protected Channel channel; public void run() { Event event = ... channel.publish(event); } } |
and configuring it in a composite:
...
<composite ....>
<component name="Timer">
<f3:implementation.timer class="..." repeatInterval="10000"/>
<producer name="channel" target="SomeChannel"/>
</component>
</composite>
Further, to limit timed events to a highly-available single source in a clustered zone (i.e. a clustered singleton), mark the implementation with @Scope("DOMAIN"):
Code Block | ||||
---|---|---|---|---|
| ||||
@Scope("DOMAIN") public class SomeTimer implements Runnable { @Producer(target="SomeChannel") protected Channel channel; public void run() { Event event = ... channel.publish(event); } } |