2013-02-24 16 views
7

应用程序通信我已经探索在骡子网络和得明白,应用到它们之间进行通信 - 即使他们在同一个骡子实例部署 - 他们将不得不使用TCP,HTTP或JMS传输。骡子国米 - 在同一个实例

虚拟机不受支持。

但是我觉得这与ESB原理有点矛盾。理想情况下,我们应该能够在ESB中定义EndPoints并使用任何Transport来连接到EndPoints?我可能是错的。 此外,由于所有应用程序共享同一个JVM,因此可以期望能够通过内存中的VM队列进行通信,而不是依赖于无事务性HTTP协议或TCP,其中可以创建的连接数取决于服务器资源。即使对于JMS,我们也需要定义和管理另一个队列以及可能对性能产生影响的大量使用。虽然我同意如果我们有分布式和集群系统可能是HTTP或JMS将只是选项。

是否有任何计划掺入VM作为应用内间通信协议或是否有任何其他的方法之一流可以与另一个流端点,但在不同的应用程序进行通信?

编辑: - 从Mulesoft http://forum.mulesoft.org/mulesoft/topics/concept_of_endpoint_and_inter_app_communication
是的,我们正在考虑,应用间通信在将来的版本答案。 现在还不清楚我们要做什么,但我们有一些关于我们希望这个功能表现的想法。我们可能会创建一个服务器级配置,您可以在其中定义要在所有应用程序中使用的资源。在那里你可以定义一个虚拟机连接器,并用它在同一台服务器上的应用之间发送消息。正如我所说,这只是一个想法。

回答

2

关于虚拟机的用法,应用间通信,只有MuleSoft可以回答如果VM将有一个将来的功能或没有。

我不认为这与ESB原理相矛盾。在David A Chappell的“企业服务总线book”第6章中,“容器”功能非常明确。容器应该尽量保持应用程序的隔离。

这将提供一些好处,如“独立部署的集成服务”(同章),更容易集群化,和其他东西。

,就好像它们放置在不同的服务器应用程序之间,你应该接近相同的VM-应用程序间的通信。

+0

感谢维克多。我同意它应该保持部署在其上的应用程序隔离。但它们应该可以通过端点访问。我们目前在Mule上看到的是能够在同一个JVM上的应用程序之间进行通信,但仍然需要依赖HTTP或像AMQ这样的外部MoM,它将在JMS上传输请求。这是我觉得的一个开销。部署在同一个JVM上的一个应用程序应该可以无缝地使用VM与另一个应用程序进行通信。如果需要,它们仍然是隔离的,但在逻辑上集成了。如果我说错了,请纠正我。 – Soumya 2013-02-25 09:15:46

+0

这种方法的问题在于聚类本质上是禁用的。你正在设计禁止它。 一个好方法是启用Mule企业版VM(今天今天有一个可怕的名字,因为它并不意味着在虚拟机传输中,而是在内存传输中)不仅在vm应用程序本地进行通信,而且在群集(参见[可靠性模式](http://www.mulesoft.org/documentation/display/current/Reliability+Patterns))。 – 2013-02-25 12:47:51

+0

您使用社区或企业吗?如果您没有使用EE,那么编写一个利用共享静态ConcurrentLinkedQueue在[VMK]中使用[DevKit]进行通信的传输应该不会很困难(http://www.milesoft.org/documentation/display/current/Mule+的devkit)。我宁愿使用redis,hornetq或一些共享内存系统来实现快速本地和集群通信。 – 2013-02-25 12:48:21