0

我的应用程序需要作为中间件(MW)工作,它从各种客户那里获得订单(以 XML 形式),其中包含 --------------Priority 1 供应商 ID,客户可以在其中发送XML 到这些组件之一

1)JMS queue
2)File system
3)HTTP
4)Web service request(rest/soap)

此 MW 将首先验证传入请求并将确认发送给通过首选渠道请求订单的客户。通道和客户端点信息存在于传入的 XML 中。

一旦它得到订单,它需要通过他们的首选渠道以 xml 的形式向不同的供应商发送订单请求。我的数据库中有供应商及其首选渠道信息。

所以它是一个企业集成用例。

我打算使用核心 Java 技术来实现它。这是我计划的方法。

对于每种类型的传入请求(JMS 队列、文件系统、HTTP、Web 服务请求(rest/soap)),将有四个侦听器/入口端点。这些侦听器会将 xml 字符串放入 jms 队列中。这将作为接待员工作并使流程异步。

现在我将拥有 jms 消费者,它将在队列上侦听。(消费者可以在同一系统上或与生产者不同,具体取决于生产者机器上的负载)。这个消费者会将 xml 字符串解析为 java 对象。执行验证。向客户发送确认(确认需要根据客户偏好发送。我将使用确认处理器工厂,它将根据偏好发送确认)。验证完成后,将此 pojo 转换为另一种 pojo 格式,以便 xstream/jaxb 进一步将其编组为 xml 格式并通过他们的首选渠道(供应商偏好存储在 db 中)发送给供应商,例如通过 soap、jms、文件请求等。

有些我遇到了这个 CAMEL 链接http://java.dzone.com/articles/open-source-integration-apache,看起来它提供了完美的解决方案,发现这是企业集成用例。

请专家建议,Camel 是解决此问题的正确方法。或者像 Spring 集成这样的其他一些企业集成框架,ESB 在这种情况下会更有利。如果有人可以指出 ESB 解决这种用例的资源。这真的很有帮助。

由于时间限制,我无法探索所有解决方案,因此寻找专家建议以便可以专注于一个。

4

1 回答 1

5

像骆驼这样的东西完全适合这项任务。

像 Camel 这样的东西提供了工具集和组件,可以更轻松地将像您描述的工作流拼接在一起,但需要注意的是,您必须首先学习整个工具(即 Camel,在这种情况下)。

对于熟练的、经验丰富的开发人员和简单的用例,您可以看到他们可能会采用您正在采用的方法。使用手头的工具(可能包括自定义代码)来配置工作流,而不是花时间学习新工具。

回想一下,虽然工具可以带来很大的好处(功能、测试、质量、文档),但它们也带来了负担(支持、资源、复杂性)。将工具集引入您的环境的一个关键方面是,虽然您可能没有编写代码,但您最终仍要对它在您的环境中的行为负责。

因此,综上所述,您需要确定合并像 Camel 这样的工具所花费的时间是否值得为您当前的项目带来好处。奇怪的是,如果您打算在未来继续并进行更多集成,那么投资这样的工具将是一个好主意,因为该工具将使这些集成更容易。

但是请注意,像 Camel 这样非常灵活的东西也带来了固有的复杂性。但是对于像您所说的那样简单的东西,我认为它非常合适。

于 2014-04-08T17:30:09.820 回答