在Siddhi订购wso2cep

时间:2016-02-25 12:33:36

标签: google-cloud-messaging wso2cep siddhi

即使我用你的提示解决了很多问题,我也是Stackoverflow的新手。现在我有一个问题,我没有找到解决方案。 我正在使用WSO2 CEP和GCM开发推送服务。 CEP处理订阅/取消订阅请求和推送事件。订阅密钥使用MySQL和其他信息存储在我自己的服务器上。 我的问题来自订阅步骤。此步骤必须处理新订阅(插入)和现有订阅(更新)。为了简化操作,我决定通过删除和插入记录来规范化这两个操作(即使记录已经在数据库中)。 为了解决这个问题,我使用Siddhi开发了一个执行计划。该计划定义了两个流:一个事件流和一个链接到MySQL表的表流。 在执行计划中,首先使用从事件中获取的密钥以及使用事件中包含的信息插入新记录之后完成删除。 但似乎操作的顺序(删除和插入)不同,所以有时我在服务器上找到两个或多个具有相同GCM密钥的记录。我通过在表上添加唯一约束来应用解决方法,但我想知道是否有办法在Siddhi操作上修复确定性顺序。

此致

Michele de Rosa

1 个答案:

答案 0 :(得分:0)

由于您使用相同的流来更新和插入表,因此无法保证删除查询将在之前执行。从同一个流接收的所有查询将并行执行,我们对订单没有任何控制权。我们可以强制执行订单的唯一方法是引入查询管道或使用模式查询来延迟事件。

但是,您的要求可以在事件表中使用新添加的insert overwrite功能。如果存在,这将自动处理您的更新要求,否则插入。

希望这会有所帮助!!

由于 Tishan