请考虑附图中所示的方案:
请指导一下。
在Petter回答后添加更多细节:
现在,最重要的部分 - 查询:
答案 0 :(得分:3)
我明白了这一点。对于" pure"这可能有点棘手。 JMS。
您基本上想要做的是让门户网站向主题发布消息,但不要让PAYROLLAPP订阅该主题(因为所有这些消息都会获得消息的副本)。所以你需要的是它之间的一些逻辑,它将来自主题订阅的消息分发到每个应用程序类型的一个队列。从该队列中,可以使用JMS实现正常负载平衡(竞争消费者模式)。
不同的JMS提供程序具有可以完成此任务的特殊实现 ActiveMQ has its Virtual Destinations,WebSphere MQ has its server side subscriptions that can subscribe from a topic to a queue。如果您的JMS提供程序没有任何方法可以处理此问题,您可能需要考虑在拓扑中添加一些路由中间件。 Apache Camel是一个很好的,轻量级的,但是有很多其他的可以在中间设置一些路由,而不会影响真正的应用程序。
更新详细问题
该行下方的队列必须存在(如果您的应用程序使用消息传递)。 "一些发行人。逻辑"不应该需要盒子。 "一些路由逻辑" box可以是ESB,或者在这种情况下,可以在消息传递服务器中实现,例如具有虚拟目标的ActiveMQ(或WebSphere MQ或者RabbitMQ等)。
整合领域有很多buzwords。简化(取决于你问的人 - ESB也可以看作是架构模式,但让它保持简单),ESB是一个服务器应用程序(或实践中多个服务器的拓扑),它是整合景观。 ESB服务器只包含从一个应用程序获取消息(文件或其他)的逻辑和小消息流,并将它们路由到许多应用程序,将它们转换为其他格式,加密,从一个传输协议(如HTTP / SOAP)转换为文件等
JMS是一个相当令人困惑和误用的词。 Java在过去几年中在某种程度上主导了企业消息传递域,因此JMS有时几乎被用作Messaging的同义词。但是,消息传递(或消息排队,异步消息传递,MOM =面向消息的中间件等)将被简单地视为具有中央中继服务器的类似传输协议的族。是不是只有Java的东西。我工作的许多成功的ESB设置实际上都利用了Messaging主干
在您的情况下,我不会深入研究ESB和EAI软件之间的学术/哲学差异。他们很可能会为你做同样的事情。相反,看看诸如价格,支持,资源足迹,监控,技术等硬性事实。功能,学习曲线等。无论是Camel / ServiceMix,Mule,JBoss ESB,Microsoft BizTalk,IBM Message Broker,Tibco等。
哈!它可能是推销员吗? ESB会做得很好。消息服务器也可以用于您的情况,例如已经指出的ActiveMQ。 BPM套装适用于编排半自动化业务流程或集成层中存在主要业务逻辑。否则,避免增加复杂性。
答案 1 :(得分:3)
- 无论解决方案(纯JMS,ESB,EAI)如何,是否需要实现水平虚线下方的部分(特定于应用程序的队列)?
醇>
消费者需要以与您选择的解决方案一起工作的方式实施,但您不必担心每个消费者或分配逻辑创建队列(假设消费者可以直接从选择的技术)
- ESB(JBoss ESB等)的使用,而不是'纯'JMS(Active MQ等),如何帮助/阻碍? ESB是否提供优于JMS的任何优势,即“仅限Java”(?)。我很困惑 - 'ESB或JMS',即使在引用这样的线程之后:JMS和ESB - 它们是如何相关的?它有一个回复说“JMS不太适合REST服务,文件系统,S / FTP,电子邮件,Hessian,SOAP等的集成,这些都可以通过本机支持这些类型的ESB更好地处理。例如,如果您有一个进程在午夜转储500MB的CSV文件,并且您希望另一个系统拾取该文件,解析CSV并导入到数据库中,这可以通过ESB轻松完成 - 而只需一个解决方案JMS会很糟糕。同样,REST服务的集成,以及对多个后端实例的负载平衡/故障转移,可以通过本机支持HTTP / S的ESB更好地完成。“这只会增加我的困惑!
醇>
我的观点是ESB会使这个解决方案过于复杂。它设计(除其他外)以协助与不同技术的集成,但更简单的解决方案也是这样做的 - 例如 - Apache Camel使用各种各样的传输(包括ActiveMQ)提供了一种非常简单的通信方式。
并非所有JMS实现都能满足其他语言的连接需求,但ActiveMQ确实使用了它的STOMP连接器。
- EAI框架(Apache Camel等)的使用方法与纯JMS或ESB方法完全不同吗?如果是,那么利弊如何?
醇>
Apache Camel和JMS是互补技术,JMS和ESB也是如此。 Camel(& Spring Integration)轻巧,简单且便携。 ESB更重要,通常会导致与ESB /应用服务器的更大耦合。
- 我被告知ESB本身无济于事,BPM(或其他什么?)需要用来定义和存储'路由'逻辑 - 这是真的吗?
醇>
这取决于您的路由'逻辑是,它看起来像你不需要路由逻辑,你只需要保证交付给1payroll消费者和1个服务台消费者。如果您希望根据该数据的某些特征有选择地公开数据/调用服务,那么BPM会更有用。
我强烈建议您阅读http://activemq.apache.org/virtual-destinations.html,使用以下内容:
N.B.I相信其他产品,例如Apache QPID提供类似的功能 - 我最了解ActiveMQ,并且已经成功使用这种方法