我是Stackoverflow的新手,即使我用你的提示解决了很多问题。现在我有一个问题,我还没有找到解决方案。我正在使用GCM和WSO2开发一个推送服务。CEP处理订阅/取消订阅请求和推送事件。订阅密钥与其他信息一起使用MySQL存储在我自己的服务器上。我的问题来自订阅步骤。此步骤必须处理新订阅(insert)和现有订阅(update)。为了使操作更简单,我决定通过删除和插入记录(即使记录可能已经在数据库中)来规范化这两个操作。为了处理这个问题,我使用Siddhi开发了一个执行计划。该计划定义了两个流:一个事件流和一个链接到MySQL表的表流。在执行计划中,首先使用从事件中获取的键进行删除,然后使用包含在事件中的信息插入新记录。但似乎操作(删除和插入)的顺序不同,所以有时我在服务器上发现具有相同GCM密钥的两个或更多记录。我通过在表上添加一个唯一约束来应用了一个解决方法,但是我想知道是否有一种方法可以修复Siddhi操作上的确定性顺序。
问候
米歇尔·德·罗莎
发布于 2016-03-07 19:40:42
因为您使用同一个流来更新和插入到表中,所以不能保证delete查询将更早执行。从同一个流接收的所有查询都将并行执行,我们对顺序没有任何控制。我们可以执行顺序的唯一方法是引入查询管道或使用模式查询来延迟事件。
但是,根据您的需求,您可以在事件表中使用新添加的insert overwrite功能。这将自动处理更新(如果存在)和插入(否则)的要求。
希望这能有所帮助!!
感谢提山
https://stackoverflow.com/questions/35627440
复制相似问题