Siddhi Core is a high-performing Complex Event Processing engine providing stream processing and complex event processing capabilities through Streaming SQL.
Core management provides the primary interfaces for creating, configuring, and managing Siddhi applications. The main entry points are SiddhiManager for global management and SiddhiAppRuntime for individual application lifecycle control.
The main interface class for interacting with Siddhi as a library. This is the primary entry point for all Siddhi operations and serves as the factory for creating and managing SiddhiAppRuntime instances.
public class SiddhiManager {
// Constructors
public SiddhiManager();
// Core Operations
public SiddhiAppRuntime createSiddhiAppRuntime(String siddhiApp);
public SiddhiAppRuntime createSiddhiAppRuntime(SiddhiApp siddhiApp);
public SiddhiAppRuntime getSiddhiAppRuntime(String siddhiAppName);
// Validation
public void validateSiddhiApp(String siddhiApp);
public void validateSiddhiApp(SiddhiApp siddhiApp);
// Configuration Management
public void setPersistenceStore(PersistenceStore persistenceStore);
public void setSinkHandlerManager(SinkHandlerManager sinkHandlerManager);
public void setSourceHandlerManager(SourceHandlerManager sourceHandlerManager);
public void setRecordTableHandlerManager(RecordTableHandlerManager recordTableHandlerManager);
public void setConfigManager(ConfigManager configManager);
public void setStatisticsConfiguration(StatisticsConfiguration statisticsConfiguration);
public void setDataSource(String dataSourceName, DataSource dataSource);
public void setIncrementalPersistenceStore(IncrementalPersistenceStore incrementalPersistenceStore);
// Extension Management
public void setExtension(String name, Class clazz);
public Map<String, Class> getExtensions();
public void removeExtension(String name);
// Runtime Management
public Map<String, SiddhiAppRuntime> getSiddhiAppRuntimeMap();
public void shutdown();
// State Management
public void persist();
public void restoreLastState();
public String getLastRevision(String siddhiAppName);
}// Create SiddhiManager with default configuration
SiddhiManager siddhiManager = new SiddhiManager();
// Set up custom configurations
siddhiManager.setPersistenceStore(new FilePersistenceStore("./state"));
siddhiManager.setStatisticsConfiguration(new StatisticsConfiguration(statisticsFactory));
// Register custom extensions
siddhiManager.setExtension("customFunction", CustomFunctionExecutor.class);
// Create Siddhi application
String siddhiApp = "define stream InputStream (name string, age int); " +
"@info(name = 'query1') " +
"from InputStream select name, age insert into OutputStream;";
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(siddhiApp);
// Validate before creating (optional)
siddhiManager.validateSiddhiApp(siddhiApp);
// Shutdown
siddhiManager.shutdown();Represents a runtime instance of a Siddhi application with complete lifecycle management. Each SiddhiAppRuntime corresponds to one Siddhi application and provides access to its streams, queries, and runtime operations.
public class SiddhiAppRuntime {
// Basic Properties
public String getName();
// Definition Access
public Map<String, StreamDefinition> getStreamDefinitionMap();
public Map<String, TableDefinition> getTableDefinitionMap();
public Map<String, WindowDefinition> getWindowDefinitionMap();
public Map<String, AggregationDefinition> getAggregationDefinitionMap();
public Set<String> getQueryNames();
public Map<String, StreamDefinition> getPartitionedInnerStreamDefinitionMap();
// Input/Output Management
public InputHandler getInputHandler(String streamId);
public void addCallback(String streamId, StreamCallback streamCallback);
public void addCallback(String queryName, QueryCallback callback);
// Store Queries
public Event[] query(String storeQuery);
public Event[] query(StoreQuery storeQuery);
public Attribute[] getStoreQueryOutputAttributes(String storeQuery);
// Source/Sink Access
public Collection<List<Source>> getSources();
public Collection<List<Sink>> getSinks();
public Collection<Table> getTables();
// Lifecycle Management
public void start();
public void startWithoutSources();
public void startSources();
public void shutdown();
// Debugging
public SiddhiDebugger debug();
// State Management
public PersistenceReference persist();
public byte[] snapshot();
public void restore(byte[] snapshot);
public void restoreRevision(String revision);
public void restoreLastRevision();
public void clearAllRevisions();
// Exception Handling
public void handleExceptionWith(ExceptionHandler<Object> exceptionHandler);
public void handleRuntimeExceptionWith(ExceptionListener exceptionListener);
// Statistics and Monitoring
public Level getRootMetricsLevel();
public void enableStats(Level level);
// Advanced Features
public void enablePlayBack(boolean playBackEnabled, Long idleTime, Long incrementInMilliseconds);
public void setPurgingEnabled(boolean purgingEnabled);
}// Create runtime from SiddhiManager
SiddhiAppRuntime runtime = siddhiManager.createSiddhiAppRuntime(siddhiApp);
// Access runtime information
System.out.println("App name: " + runtime.getName());
System.out.println("Query names: " + runtime.getQueryNames());
// Set up input handling
InputHandler inputHandler = runtime.getInputHandler("StockStream");
// Add callbacks for output
runtime.addCallback("FilteredStream", new StreamCallback() {
@Override
public void receive(Event[] events) {
// Handle filtered events
}
});
// Start runtime
runtime.start();
// Send events
inputHandler.send(new Object[]{"IBM", 100.0});
// Execute store query
Event[] results = runtime.query("from StockTable select symbol, price");
// Enable statistics
runtime.enableStats(Level.BASIC);
// Take snapshot for backup
byte[] snapshot = runtime.snapshot();
// Shutdown
runtime.shutdown();Context information holder associated with SiddhiManager containing global configurations and extension management.
public class SiddhiContext {
// Constructors
public SiddhiContext();
// Extension Management
public Map<String, Class> getSiddhiExtensions();
public Map<String, ExtensionHolder> getExtensionHolderMap();
// Persistence Configuration
public PersistenceStore getPersistenceStore();
public void setPersistenceStore(PersistenceStore persistenceStore);
public IncrementalPersistenceStore getIncrementalPersistenceStore();
public void setIncrementalPersistenceStore(IncrementalPersistenceStore incrementalPersistenceStore);
// Manager Configuration
public ConfigManager getConfigManager();
public void setConfigManager(ConfigManager configManager);
public SinkHandlerManager getSinkHandlerManager();
public void setSinkHandlerManager(SinkHandlerManager sinkHandlerManager);
public SourceHandlerManager getSourceHandlerManager();
public void setSourceHandlerManager(SourceHandlerManager sourceHandlerManager);
public RecordTableHandlerManager getRecordTableHandlerManager();
public void setRecordTableHandlerManager(RecordTableHandlerManager recordTableHandlerManager);
// Data Source Management
public DataSource getSiddhiDataSource(String dataSourceName);
public void addSiddhiDataSource(String dataSourceName, DataSource dataSource);
// Statistics Configuration
public StatisticsConfiguration getStatisticsConfiguration();
public void setStatisticsConfiguration(StatisticsConfiguration statisticsConfiguration);
// Exception Handling
public ExceptionHandler getDefaultDisrupterExceptionHandler();
}Configuration holder for Siddhi statistics module providing integration with monitoring systems.
public class StatisticsConfiguration {
// Constructor
public StatisticsConfiguration(StatisticsTrackerFactory factory);
// Configuration Access
public StatisticsTrackerFactory getFactory();
public String getMetricPrefix();
public void setMetricPrefix(String metricPrefix);
}public interface SiddhiApp {
// Parsed representation of Siddhi application
}
public interface StreamDefinition extends AbstractDefinition {
// Definition of a stream
}
public interface TableDefinition extends AbstractDefinition {
// Definition of a table
}
public interface WindowDefinition extends AbstractDefinition {
// Definition of a window
}
public interface AggregationDefinition extends AbstractDefinition {
// Definition of an aggregation
}
public interface AbstractDefinition {
// Base interface for all definitions
}
public interface SiddhiDebugger {
// Interface for debugging Siddhi applications
}
public interface ExceptionHandler<T> {
void handle(T object, Exception exception);
}
public interface ExceptionListener {
void exceptionThrown(Exception exception);
}
public interface DataSource {
// Data source interface for external data
}Install with Tessl CLI
npx tessl i tessl/maven-org-wso2-siddhi--siddhi-core