我试图理解Apache Camel,它似乎是一个轻量级的ESB。如果我对Camel /ESB的理解是正确的,那么您可以将Camel Route视为节点和边的图形。每个节点都是路由上的一个端点(可以消费/产生消息)。每条边是两个不同端点(一个生产者和一个消费者)之间的路由。
假设这是正确的,我有一个实际的问题:关于部署应用程序的ESB/Camel Route,最佳实践规定了什么?我应该把它打包成它自己的JAR吗,或者它值得成为它自己的耳朵,里面装满了EJB、Web服务和其他JAR?
我想我是在问应该如何部署/架构Camel Route或ESB,例如:
my-esb.ear/
ejb1.jar/
MyEJB_1.class
ejb2.jar/
MyEJB_2.class
webservice.war/
MyWebService.class或者..。
my-esb.jar/
MyEJB_1.class
MyEJB_2.class
MyWebService.class发布于 2012-06-22 15:23:40
据我所知,有几种方法可以运行Camel。
我个人更喜欢OSGi路线。它简单且轻量级,允许我将我的camel路由作为持久化服务(例如,窗口服务,Unix Deamon)托管,占用的空间非常小。
你现在应该意识到的是,Apache Camel可以通过几种方式进行部署,这真的是由你来决定你想怎么做。我花了一段时间来理解如何部署Camel,因为我必须尝试不同的部署模型来获得良好的感受。我唯一没有接触到的是部署到应用程序服务器,因为我觉得这些服务器中的大多数都足够重。
就架构而言,我喜欢将不同的路由/应用程序放在不同的jars中。由于我使用的是OSGi,因此我希望能够更新并部署特定的路由,而不必重新部署所有内容。如果您在一个jar中部署了所有内容,则需要关闭整个jar,重新构建并重新部署该jar。但是,这是个人喜好,您的里程可能会有所不同
希望这能对你有所帮助。
发布于 2012-06-26 02:19:01
让我逐一回答你的问题:
提供了一个描述性的、非模糊的通用因素列表,这些因素应该用于确定如何最好地部署企业服务总线(作为单个EAR,每个端点都是一个嵌入式JAR,或者作为单个“单片”JAR);
嵌入式jar或单片jar无关紧要。重要的是捆绑或战争部署。在独立捆绑包的情况下,您最终可能会得到一个非常胖的部署归档文件,其中包含许多用于依赖项解析的jars。
完全解释了为什么Camel不能很好地与JBoss或GlassFish等Java应用服务器配合使用
应用服务器/容器的
上
从逻辑上讲,如果您的容器支持OSGi,那么Camel应该不会面临任何问题。
SE
遵循链接belowThough,足够过时了,它们将给你一步一步的打包方向,至少对打包机制是清晰的:
Camel Step By Step
Camel in a Web Application
Camel Real Life Packaging & Deployment in OSGi environment
发布于 2012-06-22 00:28:20
与其他答案一样,这取决于您的需求,但ESB通常是不同集成流程的组合,这些流程不一定共享相同的生命周期。
如果您遇到这种情况,我建议您使用每集成过程的jar方法。这样,您可以为每个不同的jar拥有不同的开发生命周期,并且您可以向您的客户保证,除了该jar中的代码之外,您没有接触任何其他代码。
这并不意味着您必须使用ear解决方案。在没有ear开销的情况下,您可以完美地将不同进程的代码打包到war文件中。
https://stackoverflow.com/questions/11089676
复制相似问题