【发布时间】:2016-06-16 20:48:35
【问题描述】:
我想知道在 WSO2ESB 中的序列调用之间存储状态的正确方法。换句话说,如果我有一个调用序列 S 的计划任务,在迭代 0 结束时,我想存储一些字符串变量(我们称之为 ID),然后我想在开始时(或在迭代 1 的中间),以此类推。
更准确地说,我想从现有服务(确切地说是 Twilio)获取新 SMS 消息的列表。但是,Twilio 只允许我在选定的日期接收消息,即我无法说只给我新消息(因为我上次检查/比某个消息 ID 更新)。因此,我想创建一个计划任务,该任务将查询 Twilio 并通过 REST 调用将仅新消息传递给我的服务。为了做到这一点,我的序列需要查询 Twilio,然后遍历返回的消息列表,并丢弃之前调用中已经报告的消息。现在,要做到这一点,我需要在不同的任务/序列调用之间存储一些状态,即在序列结束时,我需要存储当前批次中最新消息的 ID。然后可以在后续调用中使用此 ID 来确定在之前的调用中已经报告了哪些消息。
我可以使用 DBLookup 和 DB Report 中介,但这似乎有点过头了(使用数据库存储单个字符串)并且对性能不太友好。另一方面,据我所见,类中介被实例化为单例,因此我可以创建一个自定义类中介来管理此状态并过滤要发送到我的服务的消息列表。我很确定这会奏效,但我想知道这是要走的路,还是我错过了更优雅的解决方案。
【问题讨论】: