【问题标题】:how to persist runtime parameter of a service call then use as parameter for the next service call WSO2 ESB如何持久化服务调用的运行时参数,然后用作下一个服务调用的参数 WSO2 ESB
【发布时间】:2015-09-04 09:27:21
【问题描述】:

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

我使用 WSO2 数据服务服务器创建了许多服务,我希望定期运行这些服务并传入上次运行日期的参数。 IE。数据服务有两个参数开始和结束日期来运行 sql。

我计划在 WSO2 ESB 中创建一个服务来协调这些服务的执行,将结果组合起来传递给另一个 Web 服务。我想我可以做到这一点;-) 我将使用计划任务以预定义的时间间隔启动它。

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

  1. 在我的数据库中创建一个配置表并创建另一个数据服务 Web 服务来检索和保存这些值
  2. 使用 vfs 传输并以某种方式将这些值以 xml、csv 或 json 格式保存到文本文件中
  3. 使用其他方式,例如 esb 序列中的属性值,并以某种方式持久化这些
  4. 还有其他的吗??

根据我目前的知识,1 似乎是最简单的,但感觉不对,因为我必须拥有对数据库的写访问权限,而我在未来构建这样的解决方案时可能通常不会拥有这些权限, 2 似乎可以使用我迄今为止对 WSO2 ESB 的有限知识,但 3 是最佳选择吗?但正如你从上面的细节中看到的那样,这是我开始挣扎的地方。

欢迎任何建议

【问题讨论】:

    标签: web-services wso2 wso2esb wso2dss vfs


    【解决方案1】:

    我对 ESB 没有太多经验。不过我也觉得你的第一个选项会更容易实现。

    最近在WSO2架构mailing list中也讨论了一个相关主题,主题"[Architecture] Allow ESB to put and update registry properties"

    曾讨论过引入注册表中介,但我不确定它是否会很快实施。

    我希望这会有所帮助。

    【讨论】:

    • 感谢您的建议。在没有任何其他建议的情况下,这就是我要去的地方(正如你所说,我认为这是最容易实施的)。注册表中介看起来也很有趣和/或调度程序的重构。
    • 不客气!我希望您能够毫无问题地实现您的要求! :)
    【解决方案2】:

    目前还没有通过 ESB 将内容保存到 ESB 的直接方法。但是你总是可以编写一个自定义中介来做到这一点,或者使用脚本中介来实现这一点

    下面是脚本中介的代码sn-p

    <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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      相关资源
      最近更新 更多