我的应用程序需要作为中间件(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 解决这种用例的资源。这真的很有帮助。
由于时间限制,我无法探索所有解决方案,因此寻找专家建议以便可以专注于一个。