Vig*_*esh 4 java design-patterns rule-engine stream-processing
假设我必须设计一个规则引擎,根据静态配置规则,责任链在运行时发生变化。实现这个问题的最佳设计模式是什么?
例如,根据某些配置,流中的一组事件可以 (1) 过滤,(2) 划分为子集 (3) 修改
对于每个流,客户可以选择全部三个或三个中的一些或三个都不选择。
因此,我的组装管道应该在运行时根据每个流的配置进行配置。
哪个是实现这一目标的最佳设计模式?
我不确定我是否理解您的用例,但有些开源项目似乎完全符合您的需求。
首先,您有Apache Camel,它允许您配置路由(静态和/或动态)。通过这种方式,您可以根据配置的路由通过管道的每个组件路由事件流。
作为 Camel 的替代或补充,Drools Fusion和Esper是两个进行复杂事件处理(即事件过滤、关联、隔离等)的开源项目。它们都支持动态添加/删除规则/查询。因此,例如,您可以不更改路由,而是将单个路由引入 Drools/Esper 会话,而只需根据配置添加/删除规则/查询即可执行您需要的操作。
在我看来,您不需要创建“规则引擎”。你可以只使用那里的东西。
| 归档时间: |
|
| 查看次数: |
3732 次 |
| 最近记录: |