Siddhi 开源项目使用教程
1. 项目的目录结构及介绍
Siddhi 项目的目录结构如下:
siddhi/
├── core/
│ ├── src/
│ ├── pom.xml
│ └── README.md
├── extensions/
│ ├── src/
│ ├── pom.xml
│ └── README.md
├── tooling/
│ ├── src/
│ ├── pom.xml
│ └── README.md
├── runtime/
│ ├── src/
│ ├── pom.xml
│ └── README.md
├── docs/
│ ├── src/
│ ├── pom.xml
│ └── README.md
├── pom.xml
└── README.md
目录结构介绍
- core/: 包含 Siddhi 的核心库,如
siddhi-core
、siddhi-query-api
等。 - extensions/: 包含各种扩展库,用于支持不同的数据源和输出。
- tooling/: 包含用于开发和调试的工具。
- runtime/: 包含运行时所需的文件和配置。
- docs/: 包含项目的文档和教程。
- pom.xml: 项目的 Maven 配置文件。
- README.md: 项目的介绍和使用说明。
2. 项目的启动文件介绍
Siddhi 项目的启动文件通常位于 runtime/
目录下。以下是一个典型的启动文件示例:
import io.siddhi.core.SiddhiAppRuntime;
import io.siddhi.core.SiddhiManager;
import io.siddhi.core.event.Event;
import io.siddhi.core.stream.input.InputHandler;
import io.siddhi.core.stream.output.StreamCallback;
public class SiddhiExample {
public static void main(String[] args) throws InterruptedException {
// 创建 Siddhi 管理器
SiddhiManager siddhiManager = new SiddhiManager();
// 定义 Siddhi 应用
String siddhiApp = "" +
"define stream StockStream (symbol string, price float, volume int); " +
"" +
"@info(name = 'query1') " +
"from StockStream[volume > 100] " +
"select symbol, price " +
"insert into OutputStream;";
// 创建 Siddhi 应用运行时
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(siddhiApp);
// 添加输出流回调
siddhiAppRuntime.addCallback("OutputStream", new StreamCallback() {
@Override
public void receive(Event[] events) {
for (Event event : events) {
System.out.println("Event: " + event);
}
}
});
// 获取输入处理器
InputHandler inputHandler = siddhiAppRuntime.getInputHandler("StockStream");
// 启动 Siddhi 应用运行时
siddhiAppRuntime.start();
// 发送事件
inputHandler.send(new Object[]{"IBM", 100.0f, 105});
inputHandler.send(new Object[]{"GOOG", 200.0f, 205});
// 等待一段时间
Thread.sleep(500);
// 停止 Siddhi 应用运行时
siddhiAppRuntime.shutdown();
}
}
启动文件介绍
- SiddhiManager: 用于创建和管理 Siddhi 应用运行时。
- SiddhiAppRuntime: 表示一个 Siddhi 应用的运行时实例。
- InputHandler: 用于向 Siddhi 应用发送事件。
- StreamCallback: 用于处理输出流中的事件。
3. 项目的配置文件介绍
Siddhi 项目的配置文件通常位于 runtime/
目录下,常见的配置文件包括 siddhi-config.yaml
和 log4j2.xml
。
siddhi-config.yaml
siddhi:
store:
- type: 'rdbms'
properties:
jdbc.url: 'jdbc:mysql://localhost:330