Java 无法在esper中执行查询

Java 无法在esper中执行查询,java,esper,Java,Esper,我为执行查询而编写的代码如下: EPServiceProvider cep = EPServiceProviderManager.getProvider("EventChannelling",config); EPRuntime rt=cep.getEPRuntime(); EPServiceProvider cep1 = EPServiceProviderManager.getDefaultProvider(config); String query = "create

我为执行查询而编写的代码如下:

EPServiceProvider cep = EPServiceProviderManager.getProvider("EventChannelling",config);
EPRuntime rt=cep.getEPRuntime();            
EPServiceProvider cep1 = EPServiceProviderManager.getDefaultProvider(config);
String query = "create table CustomerRules ( C_ID String primary key, E_Type int primary key, Rule int )";
rt.executeQuery(query);
但我得到了以下错误:

线程“main”中出现异常 com.espertech.esper.client.EPStatementException:执行时出错 语句:0[create table CustomerRules(C_ID字符串主键, E_Type int主键,Rule int)]在 com.espertech.esper.core.service.EPRuntimeImpl.getExecuteMethod(EPRuntimeImpl.java:1671) 在 com.espertech.esper.core.service.EPRuntimeImpl.executeQueryInternal(EPRuntimeImpl.java:1552) 在 com.espertech.esper.core.service.EPRuntimeImpl.executeQuery(EPRuntimeImpl.java:1526) main(Example.java:148)


有人能告诉我这个错误的原因吗?

使用
createpl
方法创建表。运行时查询API用于查询而不是创建表。

请尝试以下操作:

Configuration config = new Configuration();

//TODO Configure...

EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config);

Module module = epService.getEPAdministrator().getDeploymentAdmin().parse("create table CustomerRules (C_ID String primary key, E_Type int primary key, Rule int);");

epService.getEPAdministrator().getDeploymentAdmin().deploy(module, null);

epService.getEPRuntime().executeQuery("insert into CustomerRules(C_ID, E_Type, Rule) values ('1', 1, 1)");

让我知道它是否有效

问题在于,您试图使用EPRuntime执行create语句,该语句用于按需查询。请尝试以下方法:

    Configuration config = new Configuration();
    config.addEventType("Event", new String[] {"C_ID", "E_Type", "Rule"}, new Object[] {String.class, Integer.class, Integer.class});

    EPServiceProvider cep = EPServiceProviderManager.getProvider("EventChannelling",config);
EPRuntime rt=cep.getEPRuntime();
        String query = "create table CustomerRules ( C_ID String primary key, E_Type int primary key, Rule int )";
    cep.getEPAdministrator().createEPL(query);
    cep.getEPAdministrator().createEPL("insert into CustomerRules select C_ID, E_Type, Rule from Event");
cep.getEPRuntime().getEventSender("Event").sendEvent(new Object[]{"Prueba", 100, 100});
    System.out.println(rt.executeQuery("select * from CustomerRules").getArray()[0].get("C_ID"));
我编译了这段代码,没有收到esper引擎的投诉,我得到了输出“Prueba”

让我知道这是否有用