Application use cases often require sending recurring or timed notifications. This can be done by creating a timer component that has a producer connected to a channel:

public class SomeTimer implements Runnable {

   @Producer
   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"):

@Scope("DOMAIN")
public class SomeTimer implements Runnable {

   @Producer
   protected Channel channel;

   public void run() {
      Event event = ...
      channel.publish(event);
   }
}