如何持久化服务调用的运行时参数,然后将其用作下一个服务调用WSO2 ESB的参数

时间:2014-01-18 10:05:16

标签: web-services wso2 wso2esb wso2dss vfs

我正在寻求有关以下用例的最合适方法的建议。

我使用WSO2数据服务服务器创建了许多服务,我想定期运行传递上次运行日期的参数。即。数据服务有两个参数开始和结束日期来运行sql。

我计划在WSO2 ESB中创建一个服务来调解这些服务的执行,将结果合并到另一个Web服务上。我想我可以管理这个;-)我将使用计划任务以预定义的间隔启动它。

我在寻求建议的地方是如何跟踪上次成功的运行时间,因为我需要将其用作数据服务Web服务的参数。 我看到他们的选择

  1. 在我的数据库中创建配置表,并创建另一个数据服务Web服务以检索并保留这些值
  2. 使用vfs传输并以某种方式将这些值保存为文本文件xml,csv或json
  3. 使用其他方式,例如esb序列中的属性值,并以某种方式坚持这些
  4. 任何其他??
  5. 根据我目前的知识,似乎1是最简单的但是感觉不对,因为我必须具有对数据库的写访问权限,这在我将来构建这样的解决方案时通常不会有。 ,2似乎可以使用我迄今为止对WSO2 ESB的有限知识但是3是最佳选择吗?但正如你从上面的细节中看到的那样,这就是我开始挣扎的地方。

    欢迎任何建议

2 个答案:

答案 0 :(得分:0)

我对ESB没有多少经验。但是我也觉得你的第一个选择会更容易实现。

最近在主题mailing list

的WSO2架构"[Architecture] Allow ESB to put and update registry properties"中讨论了一个相关主题

讨论了介绍注册中介,但我不确定它会很快实施。

我希望这会有所帮助。

答案 1 :(得分:0)

截至目前,没有直接的方法可以通过ESB将内容保存到ESB。但是你总是可以编写一个自定义中介来执行此操作或使用脚本中介来实现此目的

以下是脚本调解器的代码片段

<script language="js"><![CDATA[
    importPackage(Packages.org.apache.synapse.config);
    /* creates a new resource */
    mc.getConfiguration().getRegistry().newResource("conf:/store/myStore",false);
    /* update the resource */    
    mc.getConfiguration().getRegistry().updateResource(
                "conf:/store/myStore", mc.getProperty("myProperty").toString());
]]></script>

我在ESB 4.8.1中撰写了一篇关于如何执行此操作的博客文章。你可以找到它here