如何使用 Apache Storm 为每个用户创建 Drools 规则文件?
How to create Drools rule file for each user using Apache Storm?
我们正在制作 Storm 应用程序,我们需要为每个应用程序创建规则文件 user.it 可以吗?
是的,您可以创建基于用户的规则文件。
我也对这个基于用户的规则生成进行了一些研发,在我的场景中,我创建了与 device_id 相同的规则文件,每当我收到该用户的数据包时,我都会加载规则文件在螺栓中使用该名称。
螺栓:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
try {
kbuilder.add(ResourceFactory.newInputStreamResource(new FileInputStream(new File("C:/IotHub/conf/"+deviceID))), ResourceType.DRL );
} catch (FileNotFoundException e) {
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
//
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
ksession.execute(bean);
在我的场景中,deviceId 是该设备的规则文件名
bean - 是你的 java bean
我们正在制作 Storm 应用程序,我们需要为每个应用程序创建规则文件 user.it 可以吗?
是的,您可以创建基于用户的规则文件。
我也对这个基于用户的规则生成进行了一些研发,在我的场景中,我创建了与 device_id 相同的规则文件,每当我收到该用户的数据包时,我都会加载规则文件在螺栓中使用该名称。
螺栓:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
try {
kbuilder.add(ResourceFactory.newInputStreamResource(new FileInputStream(new File("C:/IotHub/conf/"+deviceID))), ResourceType.DRL );
} catch (FileNotFoundException e) {
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
//
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
ksession.execute(bean);
在我的场景中,deviceId 是该设备的规则文件名
bean - 是你的 java bean