我的应用程序需要作为中间件(MW)工作,它从各个客户获得订单(以XML的形式),其中包含--------------优先级1 供应商ID,客户可以将XML发送到其中一个组件
1)JMS queue
2)File system
3)HTTP
4)Web service request(rest/soap)
此MW将首先验证传入请求并将确认发送给请求订单的客户 在他们喜欢的渠道。传入XML中存在通道和客户端点信息。
一旦获得订单,它需要通过xml形式的优先渠道向不同的供应商发送订单请求。 我的数据库中有供应商及其首选渠道信息。
所以它是企业集成的用例。
我计划使用核心Java技术。这是我计划的方法。
每种传入请求都有四个侦听器/条目端点(JMS队列,文件系统,HTTP,Web服务请求(休息/肥皂))。 这些监听器将把xml字符串放在jms队列中。这将作为接待员工作,并使过程异步。
现在我将拥有将在队列中监听的jms使用者。(消费者可以在同一系统上,也可以与生产者不同,具体取决于负载 生产者机器)。此使用者将xml字符串解析为java对象。执行验证。发送确认到 客户(确认需要根据客户的喜好发送。我将使用确认处理器工厂,将发送 基于偏好的确认)。验证完成后,将此pojo转换为另一种pojo格式,以便xstream / jaxb进一步转换 将其编组为xml格式并通过其首选渠道发送给供应商(供应商首选项存储在数据库中),如通过soap,jms,文件请求等。
有些我遇到过这个CAMEL链接http://java.dzone.com/articles/open-source-integration-apache,看起来它提供了完美的解决方案 并发现这是企业集成的用例。
专家请建议Camel为此提供正确的解决方案。或者其他一些企业集成框架,如Spring集成,ESB 在这种情况下会更加有用。如果有人能指出ESB解决这种用例的资源。这真的很有帮助。
由于时间限制,我无法探索所有解决方案,因此寻找专家建议,以便专注于一个。
答案 0 :(得分:5)
像Camel这样的东西完全适合这项任务。
像Camel这样的东西提供了工具集和组件,可以将描述者的工作流程拼接在一起更容易,但必须首先了解整体工具(例如Camel,在这种情况下)。
对于熟练的,经验丰富的开发人员和简单的用例,您可以看到他们可能采取您正在采取的方法。使用手头的工具配置工作流程,可能包括自定义代码,而不是花时间学习新工具。
回想一下,虽然工具可以带来很大的好处(功能,测试,质量,文档),但它们也带来了负担(支持,资源,复杂性)。将工具集引入您的环境的一个关键方面是,虽然您可能没有编写代码,但您仍然要对其在您的环境中的行为负责。
所以,总而言之,您需要确定合并像Camel这样的工具的时间投入是否值得您当前项目的利益。可能的情况是,如果您打算继续并在未来进行更多集成,那么投资这样的工具将是一个好主意,因为该工具将使这些集成更容易。
但要注意像Camel这样非常灵活的东西,也会带来它固有的复杂性。但对于像你所说的简单的东西,我认为这是一个坚实的契合。