Introduced in JBoss v4.0.3, the TimerService is a simple mbean that follows
the JBoss ServiceLifecycle model and can be used to configure an external
mbean, to produce periodically JMX notifications.
By subscribing and reacting to those notification from a 3rd mbean, you can have
a simple way of scheduling periodic tasks.
The attributes that can be configured on the TimerService are shown below:
NotificationType: the type of the produced javax.management.timer.TimerNotification
NotificationMessage: the string message to put in the produced notifications
TimerPeriod: every how often to emit notifications, e.g. 500msec, 10sec, 5min, 1h.
a zero value will produce just one notification
Repeatitions: how many timer notifications to emit when the period is not zero;
a zero value produces infinite notifications
FixedRate: whether the periodic notifications should be produced at
a FixedRate (true) or a FixedDelay (false, default) - since v4.0.5
TimerMBean: the ObjectName of the JMX Timer to configure; should be
combined with a dependency.
(taken from server/default/deploy/monitoring-service.xml)
Configure a periodic 'heartbeat' timer notification to be emitted every 5 seconds.
In this example we have inlined the creation of the Timer in the depends
block, however, a single Timer could have been declared independently with
multiple TimerService instances pointing to it.
<mbean code="org.jboss.monitor.services.TimerService"
name="jboss.monitor:name=Heartbeat,type=TimerService">
<attribute name="NotificationType">jboss.monitor.heartbeat</attribute>
<attribute name="NotificationMessage">JBoss is alive!</attribute>
<attribute name="TimerPeriod">5sec</attribute>
<depends optional-attribute-name="TimerMBean">
<mbean code="javax.management.timer.Timer"
name="jboss.monitor:name=Heartbeat,type=Timer"></mbean>
</depends>
</mbean>
If you want to see/log the emitted notifications from the above example,
you can configure a NotificationListener as follows. (Note we subscribe
to the Timer mbean not the TimerService!)
<mbean code="org.jboss.monitor.services.NotificationListener"
name="jboss.monitor:service=NotificationListener">
<attribute name="SubscriptionList">
<subscription-list>
<mbean name="jboss.monitor:name=Heartbeat,type=Timer"></mbean>
</subscription-list>
</attribute>
</mbean>
Related:
Referenced by:
There are no comments on this article