|
Event Stream Intelligence: Esper & NEsper |
Getting Help
How to get support
- Please contact EsperTech for support, training and services for Esper.
- Consider the solution patterns page on this site.
- Consider checking the regression test suite for specific questions, see Source Repository, under folder "src/test/java/com/espertech/esper/regression"
- File an issue using JIRA.
- Use the user mailing list for usage-related questions user@esper.codehaus.org.
- File a feature request, also through JIRA.
- Look through the mailing list archives.
When contacting us, please provide
- The version used.
- The complete stack trace of any exception, if an exception is reported.
- A snippet of Java code or a unit test to reproduce the issue or question.
- Keep this code very simple and minimal without any additional classes.
- The test code should not require additional jar files other then those required by Esper itself.
- The test code should not use random data. Please take the time to produce the minimal number of non-random test events.
- The test code should only use threading when it demonstrates a threading problem. Use just the main thread for all testing otherwise.
- For example test classes, please see the regression test suite at source code for Esper regression tests.
- A sample test class is provided below.
Please consider obtaining support from EsperTech.
When we get questions on the mailing lists that ask for a complete solution, we can often only provide short summarized answers as we don't usually have the time to look into each inquiry in the detail required. EsperTech support will spend the time needed to get you to a desired solution.
Sample format for "How do I" questions
When asking design questions on the user mailing list please consider this outline.
Please first summarize the general use case briefly in 1 sentence.
In order for us to try and understand what you want to accomplish, please report input events, time passing and desired output following below format. This helps us understand the requirements you have. We would prefer not to look at an existing EPL design since we can usually help you better by understanding the requirements.
Please provide 3 minimal sample events and the desired output event(s) and timing relationship of input and output. Optimally this takes only 10 lines of text and concentrates only on relevant event properties, leaving unnecessary details off.
Please consider following this format for describing input and output events:
at time t0, an event arrives:
event E1{id='001', value='...', ....} (E1 being the event type and {} contains event property name value pairs)
at time t1, an event arrives:
event E2{id='002', value='...', ....}
at time t2, which is 15 minutes after t0:
output event {id='002', value='...', ....}
Sample code snippet for providing a test
- Simple event class "Event" with a single field is part of the test class.
- Time controlled via external timer events and not Thread.sleep
- Exception handling not cluttering the test code
public class TestExample extends TestCase { private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS"; public void testExample() throws Exception { Configuration config = new Configuration(); config.getEngineDefaults().getThreading().setInternalTimerEnabled(false); config.addEventType(Event.class); EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(config); // set the current time engine.getEPRuntime().sendEvent(new CurrentTimeEvent(parse("2001-05-1T08:20:00.000"))); // put your EPL statements here String epl = "create variable boolean IsOutputTriggered_1 = false;" + "\n" + "select * from EventsWindow output snapshot when count_insert > 1;"; engine.getEPAdministrator().getDeploymentAdmin().parseDeploy(epl); engine.getEPAdministrator().getStatement("out").addListener(new PrintUpdateListener()); // send sample events System.out.println("Sending P1"); engine.getEPRuntime().sendEvent(new Event("P1")); // advance time engine.getEPRuntime().sendEvent(new CurrentTimeEvent(parse("2001-05-1T08:20:01.000"))); // send sample events System.out.println("Sending P2"); engine.getEPRuntime().sendEvent(new Event("P2")); } public static long parse(String datestr) { try { SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); return sdf.parse(datestr).getTime(); } catch (Exception ex) { throw new RuntimeException("Error parsing date '" + datestr + "' as format '" + DATE_FORMAT + "' : " + ex.getMessage(), ex); } } public static class Event { private String productId; public Event(String productId) { this.productId = productId; } public String getProductId() { return productId; } }
About Esper and NEsper
NewsAbout Esper for Java
About NEsper for .NET
License and Trademark Use
Terms of Use
Tutorials and Case Studies
TutorialQuick Start
Articles and Presentations
Solution Patterns
Short Case Study
Longer Case Study
DEBS 2011 Challenge
Additional Examples
Technology Links
Esper for Java
DownloadChange History
Documentation
FAQ
Reporting Issues
Building
On Performance
NEsper for .NET
DownloadChange History
Documentation
FAQ
Reporting Issues
Building
The Esper/NEsper Team
How To ContributeMailing Lists/Forums
Roadmap
Source Repository
Last Published: Apr 22, 2013
Version: 4.9.0
