【问题标题】:Understanding how Mule ESB fits in with JDBC and REST了解 Mule ESB 如何适应 JDBC 和 REST
【发布时间】:2014-05-10 22:10:54
【问题描述】:

我在我们的 JBoss 应用服务器中运行了这个简单的 REST 服务,效果很好。目前,该服务有一个 @GET 方法 (getAllPeople),它与 ​​mysql 数据库建立 JDBC 连接,以检索一些数据(SELECT name, address FROM Person)。

我的团队负责人希望我试验 Mule ESB,并以这个简单的项目为起点。我对如何使用 Mule 流程进行这项工作感到困惑。我使用 HTTP 入站点、REST 组件和 JDBC 组件设置我的流程,如下所示:

我将 JDBC 组件配置为使用 MySQL,并向其添加了一个查询(SELECT name, address FROM Person)。

问题:我的 REST 服务 @GET 方法中的代码仍然使用 JDBC 直接连接到数据库。我认为我需要将其更改为调用 Mule JDBC 数据源,但我不知道如何执行此操作。我需要在我的 REST 服务 @GET 方法中添加什么代码才能使用 Mule JDBC 组件并获得结果?我正在尝试了解这些组件如何相互通信。

编辑:新思想——应该使用 ESB 将单个系统的不同组件(例如 REST 服务、SOAP 服务和 JDBC 数据源)链接在一起,还是应该仅使用 ESB 将完全独立的系统连接在一起?

【问题讨论】:

  • ESB 通常非常适合集成不同的系统,其中应用程序之间存在大量的交流。正如您所说,您的应用程序非常简单......所以请保持这种状态并运行远离 ESB,它们会使您的环境更加复杂,并会引入新的故障场景。在我看来,ESB 是复杂集成的最后手段。回答你的问题这个骡子example 与你想做的类似。
  • 我明白你的意思,也同意你的看法。然而,这只是一个练习项目,用于学习/理解 Mule 的工作原理。我确实意识到 ESB 对于像这样的小项目来说完全是矫枉过正,但我​​仍然需要了解它们如何为未来的项目工作。

标签: java rest jdbc mule esb


【解决方案1】:

我不确定你为什么在两者之间有那个“休息”组件。可能不需要。最简单的方法是拥有 http、一个转换器(将数据从 http 转换为/从)和一个 jdbc 组件。使用这种方法,您将抛弃 JBoss App Server 中现有的 ReST 服务。

我认为在发布的图片中,您尝试调用 Jboss App Server 中可能不需要的预先存在的 ReST 服务。您可以简单地模仿现有服务的功能。或者您可以考虑现有服务和新的 mule 服务可以充当代理服务 - 在这种情况下不需要 JDBC 组件。

【讨论】:

    【解决方案2】:

    我们可以在这里使用mule调用rest api,rest api会返回一些可能不够用的数据。为了根据 rest 调用的结果(由 JsontoObject 转换)从 db 中获取更多数据,可以使用 jdbc 连接器。在您的情况下,如果您想调用最终调用数据库的 rest api,您将获得 json 或 xml,它们可以被转换以将数据发送到出站。

    谢谢-

    【讨论】:

      【解决方案3】:

      为了使您的简单示例正常工作,只需删除 REST 组件并在 JDBC 组件之后添加一个 Object to JSON 转换器即可。然后,您的流程将以 JSON 格式返回查询结果。

      【讨论】:

      • 谢谢,听起来这在这种情况下可行,但最终,我需要使用更复杂的 REST 服务,并且想知道 REST 和 JDBC 交互是如何工作的。最终,我需要在我的服务中进行更复杂的数据处理,并根据处理结果存储/检索数据。现在这让我想知道:如果我的 REST 服务完全依赖于我的数据库,并且服务和数据库是统一系统的一部分,那么也许不应该以这种方式使用 ESB。
      • 通常,当您不使用由 Java 服务类支持的 REST 组件时,您将使用 JDBC 组件。如果您在 Mule 应用程序中的某个地方需要 db i/o,这只是一个简单的外观。如果您要“体验 Mule”,我建议您尝试使用不同的 Mule 组件来实现您的处理需求,而不是插入 Java 类。
      • 我明白了。谢谢,你很有帮助。我试图将 Mule ESB 视为可以相互利用的资源的集合,但我认为我确实需要在工作流方面进行更多思考。
      猜你喜欢
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      相关资源
      最近更新 更多