Hi, I developed a test case almost identical to the one you suggested and I am pasting it at the end of this email. In the last months we did a few fixes on the event processing part and indeed this test works as expected, i.e. the assertion at the end of the test is true meaning that all the 10K inserted events get correctly processed.
I suggest you to try this on the 6.1.0.Beta2 version that should already contain all the fixes related to this use case. Anyway we will drop a Beta3 before the end of this week. I hope this helps, Mario -------- @Test public void testThroughput() throws Exception { String drl = "package drools\n" + "\n" + "import " + TemperatureEvent.class.getCanonicalName() + "\n" + "global java.util.concurrent.atomic.AtomicInteger counter\n" + "\n" + "declare TemperatureEvent\n" + "@role(event)\n" + "end\n" + "\n" + "rule \"RULE S1\"\n" + "when\n" + " $te:TemperatureEvent(measure <= 50) from entry-point entryone\n" + "then\n" + " counter.incrementAndGet();\n" + //" System.err.println(\"The temperature at location - \"+$te.getLocation() + \" is \" + $te.getMeasure());\n" + "end\n" + "\n" + "rule \"RULE S2\"\n" + "when\n" + " $te:TemperatureEvent(measure > 50) from entry-point entryone\n" + "then\n" + " counter.incrementAndGet();\n" + //" System.err.println(\"The temperature at location - \"+$te.getLocation() + \" is \" + $te.getMeasure());\n" + "end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem(); KieModuleModel kieModule = ks.newKieModuleModel(); kieModule.newKieBaseModel("KBase") .setDefault(true) .setEventProcessingMode(EventProcessingOption.STREAM) .newKieSessionModel("KSession") .setDefault(true); kfs.writeKModuleXML(kieModule.toXML()); kfs.write("src/main/resources/lifecycle.drl", drl); KieBuilder builder = ks.newKieBuilder(kfs).buildAll(); assertEquals(0, builder.getResults().getMessages().size()); final KieSession kSession = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()).newKieSession(); AtomicInteger counter = new AtomicInteger(0); kSession.setGlobal("counter", counter); EntryPoint entryPoint1 = kSession.getEntryPoint("entryone"); new Thread() { @Override public void run() { kSession.fireUntilHalt(); } }.start(); Random measure = new Random(System.currentTimeMillis()); Random location = new Random(System.currentTimeMillis() - 1000000L); String locations[] = { "Bangalore", "Chennai", "Delhi", "Mumbai", "Kolkata" }; for (int i = 0; i < 10; ++i) { for (int j = 0; j < 1000; ++j) { TemperatureEvent te = new TemperatureEvent( measure.nextInt(100), locations[location.nextInt(5)], System.currentTimeMillis()); entryPoint1.insert(te); } } Thread.sleep(100L); kSession.halt(); kSession.dispose(); assertEquals(10000, counter.get()); } public static class TemperatureEvent { int measure; String location; long timeStamp; public TemperatureEvent(int measure, String location, long timeStamp) { this.measure = measure; this.location = location; this.timeStamp = timeStamp; } public int getMeasure() { return measure; } public void setMeasure(int measure) { this.measure = measure; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public long getTimeStamp() { return timeStamp; } public void setTimeStamp(long timeStamp) { this.timeStamp = timeStamp; } } -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Fusion-Dropping-Actions-to-Events-tp4029314p4029334.html Sent from the Drools: User forum mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users