如何打包/部署ESB?

IAm*_*aja 9 java architecture soa esb apache-camel

我试图围绕Apache Camel,这似乎是一个轻量级的ESB.如果我正确理解Camel/ESB,那么您可以将Camel Route视为节点和边的图形.每个节点都是路由上的端点(可以使用/生成消息).每条边是两个不同端点(1个生产者和1个消费者)之间的路径.

假设这是正确的,我有一个实际的问题:最佳实践是如何规定部署应用程序的ESB/Camel Route的?我应该将其打包为自己的JAR,还是值得成为自己的充满EJB,Web服务和其他JAR的EAR?

我想我是在询问如何部署/构建Camel Route或ESB,例如:

my-esb.ear/
    ejb1.jar/
        MyEJB_1.class
    ejb2.jar/
        MyEJB_2.class
    webservice.war/
        MyWebService.class
Run Code Online (Sandbox Code Playgroud)

要么...

my-esb.jar/
    MyEJB_1.class
    MyEJB_2.class
    MyWebService.class
Run Code Online (Sandbox Code Playgroud)

Nam*_*ian 7

根据我的理解,有几种方法可以运行Camel.

  1. 嵌入在Java应用程序中:您可以将Camel嵌入到独立的Java应用程序中.在这种情况下,您将在应用程序中启动Camel Context,它将启动路由等.当您的应用程序需要与服务等进行通信时,这非常有用.为此,您需要将Camel和第三方jar部署到组件中类路径.

  2. 嵌入在Web应用程序中:正如人们已经指出的那样,这似乎是一种流行的选择.Camel jar和第三方jar包装在WAR文件中,基本上部署到Web容器(如Tomcat)以承载Camel服务.

  3. 嵌入在应用程序服务器中:我已经阅读了一些关于如何将Camel部署到应用程序服务器(如JBoss)的文章,我甚至读过有关部署到Glassfish的人员.这与您部署到Tomcat的方式非常相似.JBoss有一些你需要解决的类加载问题,这使得它变得棘手.所以是的,你可以通过WAR路由部署到应用服务器.

  4. 部署到OSGi:您可以相对快速地使Camel jar成为OSGi包,并部署到OSGi框架,例如Apache Felix.将jar转换为适当的OSGi包然后部署相对简单.这里的一个大问题是某些第三方可能没有供您部署的OSGi兼容捆绑包.

我个人的偏好是OSGi路线.它简单轻便,允许我作为持久服务(即Window服务,Unix Deamon)托管我的骆驼路线,占用空间非常小.

你现在应该意识到的事情是,Apache Camel可以通过多种方式进行部署,由你自己决定如何做到这一点.我花了一些时间来了解如何部署Camel,因为我必须使用不同的部署模型来获得良好的感觉.我唯一没有接触的是部署到Application Server,因为我觉得这些服务器大部分都足够重.

就架构而言,我喜欢将不同的路线/应用程序保存在不同的罐子中.由于我使用OSGi,我希望能够更新特定路由并进行部署,而无需重新部署所有内容.如果您在一个jar中部署了所有内容,则需要重新进行全局重建并重新部署jar.但这是个人偏好,您的里程可能会有所不同

希望这个对你有帮助.