Rabbitmq 埃斯珀没有';不要在以后的阶段接受新的陈述

Rabbitmq 埃斯珀没有';不要在以后的阶段接受新的陈述,rabbitmq,esper,spring-amqp,Rabbitmq,Esper,Spring Amqp,正如标题所说,我们在使用Esper和RabbitMQ组合构建项目时遇到问题。因此,我们需要使用Esperio(版本4.10)的amqp适配器 我们从手册中的基础知识开始,但由于某些原因,我们的查询没有得到应有的评估。 我们已经发现在amqp适配器的声明中需要切换“EventBusSink”和“EventBusSource”(生成错误,如“未定义outputstream”) 我们使用Spring AMQP在Rabbitmq中设置了2个队列,如下所示: <rabbit:connectio

正如标题所说,我们在使用Esper和RabbitMQ组合构建项目时遇到问题。因此,我们需要使用Esperio(版本4.10)的amqp适配器

我们从手册中的基础知识开始,但由于某些原因,我们的查询没有得到应有的评估。 我们已经发现在amqp适配器的声明中需要切换“EventBusSink”和“EventBusSource”(生成错误,如“未定义outputstream”)

我们使用Spring AMQP在Rabbitmq中设置了2个队列,如下所示:

   <rabbit:connection-factory id="connectionFactory" />

   <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" />

   <rabbit:admin connection-factory="connectionFactory" />

   <rabbit:queue name="myQueue" durable="false">
         <rabbit:queue-arguments value-type="java.lang.Long">
                <entry key="x-message-ttl" value="50000" />
         </rabbit:queue-arguments>
   </rabbit:queue>

   <rabbit:queue name="myOutputQueue" durable="false">
         <rabbit:queue-arguments value-type="java.lang.Long">
                <entry key="x-message-ttl" value="50000" />
         </rabbit:queue-arguments>
   </rabbit:queue>

   <rabbit:listener-container
         connection-factory="connectionFactory">
         <rabbit:listener ref="foo" method="listen"
                queue-names="myOutputQueue" />
   </rabbit:listener-container>

   <bean id="foo" class=" messagebroker.Foo" />
         Configuration config = new Configuration();
         config.addEventType("InputEvent", Event.class);
         config.addEventType("OutputEvent", OutputEvent.class);
         config.getEngineDefaults().getLogging().setEnableTimerDebug(false);
         config.getEngineDefaults().getLogging().setEnableExecutionDebug(true);
         config.getEngineDefaults().getLogging().setEnableQueryPlan(true);
         epService = EPServiceProviderManager.getDefaultProvider(config);
         EPRuntime cepRT = epService.getEPRuntime();
         EPAdministrator cepAdm = epService.getEPAdministrator();
         cepAdm.getConfiguration().addImport(AMQPSource.class.getPackage().getName() + ".*");

         String epl = "Create Dataflow AMQPIncomingDataFlow \n"
                       // + "Create schema test as (id string), \n"
                       + "AMQPSource -> instream<InputEvent> \n"
                       + "{host: 'localhost'," + "port: 5672," + "username:'guest',"
                       + "password:'guest'," + "queueName: 'myQueue',"
                       + "declareDurable: false," + "declareExclusive: false,"
                       + "declareAutoDelete: false," + "prefetchCount : 100,"
                       + "waitMSecNextMsg: 0," + "consumeAutoAck: true,"
                       + "collector: {class: 'AMQPToObjectCollectorSerializable'},"
                       + "logMessages: true } \n" + "EventBusSink(instream){}";

         cepAdm.createEPL(epl);
         EPDataFlowInstance instance = cepRT.getDataFlowRuntime().instantiate(
                       "AMQPIncomingDataFlow");
         instance.start();

         cepAdm.getConfiguration().addImport(
                       AMQPSink.class.getPackage().getName() + ".*");
         String epl2 = "Create Dataflow AMQPOutgoingDataFlow \n"
                       + "EventBusSource -> outstream<OutputEvent>{} \n"
                       + "AMQPSink(outstream)"
                       + "{host: 'localhost',"
                       + "port: 5672,"
                       + "username:'guest',"
                       + "password:'guest',"
                       + "queueName: 'myOutputQueue',"
                       + "declareDurable: false,"
                       + "declareExclusive: false,"
                       + "declareAutoDelete: false,"
                       + "waitMSecNextMsg: 0,"
                       + "collector: {class: 'ObjectToAMQPCollectorSerializable'}, logMessages: true }";

         cepAdm.createEPL(epl2);
         EPDataFlowInstance instance2 = cepRT.getDataFlowRuntime().instantiate(
                       "AMQPOutgoingDataFlow");
         instance2.start();
以及发送的事件:

 epService.getEPRuntime().sendEvent(new InputEvent (50, 51, "28853a2b6a88477197d88ee9f89d2ab7", "item", 50, false, null,  "create"));
 epService.getEPRuntime().sendEvent(new InputEvent (50, 52, "f77537e468c84adfa117d6aab48f929c", " item ", 50, false, null,  "create"));
 epService.getEPRuntime().sendEvent(new InputEvent (50, 53, "1ea4c8af03354a1da134e33783b22b24", " item ",50, false, null,  "create"));
 epService.getEPRuntime().sendEvent(new InputEvent (50, 50, "ab1ead380b6b48bdb3872de4277195a0", " item ",-1, false, null,  "create"));
Esper中是否有在运行时发布语句的限制

塔克斯


Jana

在运行时发布EPL没有任何限制。
您是在J2EE服务器上运行的吗?

我们是在tomcat服务器上运行的,但是经过一些尝试和错误,我们在不知道到底出了什么问题的情况下解决了这个问题。无论哪种方式,都没有任何限制

 epService.getEPRuntime().sendEvent(new InputEvent (50, 51, "28853a2b6a88477197d88ee9f89d2ab7", "item", 50, false, null,  "create"));
 epService.getEPRuntime().sendEvent(new InputEvent (50, 52, "f77537e468c84adfa117d6aab48f929c", " item ", 50, false, null,  "create"));
 epService.getEPRuntime().sendEvent(new InputEvent (50, 53, "1ea4c8af03354a1da134e33783b22b24", " item ",50, false, null,  "create"));
 epService.getEPRuntime().sendEvent(new InputEvent (50, 50, "ab1ead380b6b48bdb3872de4277195a0", " item ",-1, false, null,  "create"));