[rules-users] Drools Fusion inconsistencies at increasing event throughputs
Vieri
vieri.emiliani at gmail.com
Wed Apr 2 11:39:24 EDT 2014
Mario,
My fault. Here you are the drls:
*Not working *(log #1 in my last mail)
*[This is the drl I included in my first post to the list. The accumulate
occurs in the when clause of the cron based rule.]*
package it.intext.unity.test
import it.intext.unity.test.SynthEvent;
import java.util.Date;
global org.slf4j.Logger logger;
declare SynthEvent // The class is the same you used in previous tests
@role( event )
@timestamp( timestamp )
end
declare EventCounter
@role( event )
@timestamp( timestamp )
id : long
key : String
timestamp : Date
end
// Business rules
rule "Create counter"
when
$e : SynthEvent() from entry-point "synth"
then
entryPoints["counters"].insert( new EventCounter( $e.getId(), "event",
$e.getTimestamp() ) );
// if (Math.random() < 0.001) logger.debug("New event: {}", $e.getId());
end
// Metrics
rule "Count epm"
timer ( cron: 0/10 * * * * ? )
when
Number( $count : intValue ) from accumulate(
EventCounter( key == "event" ) over window:time( 60s ) from
entry-point "counters", count(1) )
then
logger.debug("epm = {}", $count );
end
rule "Count live counters"
timer ( cron: 0/60 * * * * ? )
when
Number( $count : intValue ) from accumulate(
EventCounter( key == "event" ) from entry-point "counters",
count(1) )
then
logger.debug("Live counters = {}", $count );
end
*Working *(log #3 in my last mail)
*[This is the drl you posted in your reply. Here you can see the
CronTrigger usage. Cron based rule has empty LHS, and RHS inserts a
trigger, accumulate occurs in a standard (not cron based) rule]*
package it.intext.unity.test
import it.intext.unity.test.SynthEvent;
import java.util.Date;
global org.slf4j.Logger logger;
declare SynthEvent
@role( event )
@timestamp( timestamp )
end
declare EventCounter
@role( event )
@timestamp( timestamp )
id : long
key : String
timestamp : Date
end
declare CronTrigger end
rule "Trigger Metric"
timer ( cron: 0/10 * * * * ? )
when
then
entryPoints["triggers"].insert( new CronTrigger() );
end
rule "Create counter"
when
$e : SynthEvent() from entry-point "synth"
then
entryPoints["counters"].insert(new EventCounter( $e.getId(), "event",
$e.getTimestamp() ) );
end
rule "Count epm"
when
$trigger : CronTrigger() from entry-point "triggers"
Number( $count : intValue ) from accumulate(
EventCounter( key == "event" ) over window:time( 60s )from
entry-point "counters", count(1) )
then
System.out.println("[" + new Date() + "] epm = " + $count );
retract($trigger);
end
The code used to run the tests is the one we both used in our previous test
session. For details you can mail me directly.
Thanks,
Vieri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140402/2e111a23/attachment-0001.html
More information about the rules-users
mailing list