java - Drools 管道问题

标签 java jboss drools

我在 tibco 上有一个队列。我正在尝试使用 drools 管道从队列中接收对象,如下所示。

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
String jmsRules ="jms.drl";
kbuilder.add(ResourceFactory.newClassPathResource(jmsRules, getClass()), ResourceType.DRL);

    if (kbuilder.hasErrors()) { 
        System.out.println("KBuilder has errors: " + kbuilder.getErrors()); 
        return; 
    } 

    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); 
    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); 
    StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); 
    KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert(); 

    Action unwrapObjectStage = PipelineFactory.newJmsUnwrapMessageObject(); 
    unwrapObjectStage.setReceiver(insertStage); 

    Pipeline entry = PipelineFactory.newStatefulKnowledgeSessionPipeline(ksession); 
    entry.setReceiver(unwrapObjectStage); 

    Properties props = new Properties(); 

    props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.tibco.tibjms.naming.TibjmsInitialContextFactory"); 
    props.setProperty(Context.URL_PKG_PREFIXES, "com.tibco.tibjms.naming"); 
    props.setProperty(Context.PROVIDER_URL, "tibjmsnaming://10.6.8.21:7222"); 
    String destinationName = "DIAG1_vmware-ucs-1-v02_routing"; 

    Service messenger = PipelineFactory.newJmsMessenger(entry, props, destinationName, null); 
    messenger.start(); 
    ksession.fireAllRules(); 

    System.out.println("NUMBER OF FACTS INSERTED===>"+ksession.getFactCount());
    ksession.dispose(); 

    messenger.stop(); 

指定的队列 (DIAG1_vmware-ucs-1-v02_routing) 已经有很少的对象。当我运行该程序时,出现以下异常。

Exception in thread "main" java.lang.RuntimeException: Unable to instantiate JmsFeeder
    at org.drools.runtime.pipeline.impl.JmsMessenger.<init>(JmsMessenger.java:63)
    at org.drools.runtime.pipeline.impl.JmsMessengerProviderImpl.newJmsMessenger(JmsMessengerProviderImpl.java:34)
    at org.drools.runtime.pipeline.PipelineFactory.newJmsMessenger(PipelineFactory.java:410)
    at com.sample.JMSPipelineSmooksDemo.go(JMSPipelineSmooksDemo.java:78)
    at com.sample.JMSPipelineSmooksDemo.main(JMSPipelineSmooksDemo.java:26)
Caused by: javax.naming.NameNotFoundException: Name not found: 'ConnectionFactory'
    at com.tibco.tibjms.naming.TibjmsContext.lookup(TibjmsContext.java:713)
    at com.tibco.tibjms.naming.TibjmsContext.lookup(TibjmsContext.java:489)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at org.drools.runtime.pipeline.impl.JmsMessenger.<init>(JmsMessenger.java:60)
    ... 4 more

请帮我解决这个问题。

最佳答案

Drools Pipeline 已弃用,请使用 Drools Camel。

关于java - Drools 管道问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12406872/

相关文章:

java - 将 For 循环的即时值分配给 mutablearray

java - 在 JBOSS 中升级 Hibernate 版本

java - 使用 Drools fluent API 即时更改规则的示例

java - 我为什么要使用 Drools?

linux - 在同一台服务器上运行 Tomcat 和 JBoss 有什么陷阱吗?

java - 我们可以在jbpm6脚本任务中访问drools规则引擎的工作内存事实吗?

java - 在给定坐标处创建带有文本的 pdf(PDFBox?)

java - Android NDK 的 NFC API

java - 共享首选项不会保存数据

jboss - 没有支持许可证,我可以使用JBoss EAP 6吗?