ESB 应该如何打包/部署?

2024-03-19

我正在尝试了解 Apache Camel,它似乎是一个轻量级的 ESB。如果我正确理解 Camel/ESB,那么您可以将 Camel Route 视为节点和边的图。每个节点都是路由上的端点(可以消耗/产生消息)。每条边都是两个不同端点(1 个生产者和 1 个消费者)之间的路由。

假设这是正确的,我有一个实际问题:部署应用程序的 ESB/Camel 路由的最佳实践有何规定?我应该将其打包为自己的 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

Or...

my-esb.jar/
    MyEJB_1.class
    MyEJB_2.class
    MyWebService.class

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

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

  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,因为我必须尝试不同的部署模型才能获得良好的感觉。我唯一没有接触过的是部署到应用程序服务器,因为我觉得这些服务器中的大多数都足够重。

就架构而言,我喜欢将不同的路由/应用程序保存在不同的 jar 中。由于我使用 OSGi,我希望能够更新特定路由并部署它,而无需重新部署所有内容。如果您将所有内容部署在一个 jar 中,则需要拆除世界并重新部署该 jar。但这是个人喜好,您的里程可能会有所不同

希望这个对你有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESB 应该如何打包/部署? 的相关文章

  • 如何在java中压缩/解压tar.gz文件

    谁能告诉我在java中压缩和解压缩tar gzip文件的正确方法我一直在搜索 但我能找到的最多的是zip或gzip 单独 我写了一个包装器公共压缩 http commons apache org compress called jarchi
  • Java Sqlite Gradle

    我对 gradle 和 java 还很陌生 我有一个使用 sqlite 的项目 它通过 intellij idea 运行良好 但我无法从终端运行它 它会抛出异常 java lang ClassNotFoundException org sq
  • 如何使用 Java 创建多个模式连接?

    我必须使用两个数据库 DB2 Oracle 我在 DB2 数据库中有一个名为NAVID 我想使用 Java 为 Oracle 中的所有表创建相同的架构 public class automateExport static String va
  • 如何在Mac上使用eclipse安装jetty

    我是一个新手 jetty 和 RESTful API 我想使用 Jetty 创建 REST 服务 并希望将嵌入式 jetty 与 eclipse 一起使用 任何人都可以建议我在 Mac OS 中使用 Eclipse 安装 Jetty Jet
  • 使用 JAXB 编组 LocalDate

    我正在构建一系列链接类 我希望能够将其实例编组到 XML 以便我可以将它们保存到文件中并稍后再次读取它们 目前我使用以下代码作为测试用例 import javax xml bind annotation import javax xml b
  • 通过 JNI 从 Applet 调用 DLL

    我有一个 概念验证 的作品 它跨越了一些不熟悉的领域 我的任务是将 EFTPOS 机器连接到在内联网浏览器中作为小程序运行的应用程序 我暂时忽略了 EFTPOS dll 并用我选择的语言 Delphi 创建了一个简单的 JNI 修饰的 DL
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 带有面板的 Java Swing JToolbar:外观和感觉

    我有一个JToolbar其中包含多个JPanels 需要 因为我希望每个都有特定的边界 不幸的是 外观管理器无法识别JPanels属于工具栏和JButtons因此 渲染器与普通按钮一样 即没有工具栏上的特殊鼠标悬停效果 更换JPanels
  • 用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

    我正在寻找一个 Servlet 过滤器库 它可以帮助我保护我们的 Web 服务免受未经授权的使用和 DDoS 攻击 我们的网络服务有 授权客户 因此理想情况下 过滤器将帮助检测未经授权或行为不当的客户 或检测使用同一帐户的多个人 此外 我们
  • 如何使用 Spring MVC 和 Thymeleaf 添加静态文件

    我的问题是如何添加 CSS 和图像文件等静态文件 以便我可以使用它们 我正在使用 Spring MVC 和 Thymeleaf 我查看了有关此主题的各种帖子 但它们对我没有帮助 所以我才来问 根据这些帖子 我将 CSS 和图像文件放在res
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • Kerberos 缓存票证

    我使用的是 Windows 7 64 位 我创建了一个简单的应用程序来对实现 PrivilegedAction 的类的 run 方法中的文件进行计数 以下是我的 jaas conf 文件 CountFiles com sun securit
  • Java 类:匿名类、嵌套类、私有类

    有人能解释一下Java中匿名类 嵌套类和私有类之间的区别吗 我想知道与每个相关的运行时成本以及每个编译器的方法 这样我就可以掌握哪个最适合用于例如性能 编译器优化的潜力 内存使用以及其他 Java 编码人员的普遍可接受性 我所说的匿名类是指
  • Netty中连接关闭后重新连接的最佳方法是什么

    简单场景 扩展 SimpleChannelUpstreamHandler 的较低级别的类 A 此类是发送消息和接收响应的主力 系统其他部分可以使用顶级类 B 来发送和接收消息 可以模拟同步和异步 此类创建 ClientBootstrap 设
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • 条件查询:按计数排序

    我正在尝试执行一个标准查询 该查询返回 stackoverflow 中回答最多的问题 例如常见问题解答 一个问题包含多个答案 我正在尝试使用标准查询返回按每个问题的答案数排序的回答最多的问题 任何人都知道我应该在 hibernate cri
  • Java:基于 Web 的应用程序中的单例类实例

    我在 Web Application 中有这个 Singleton 类 public class MyDAO private static MyDAO instance private MyDAO public static MyDAO g
  • RecyclerView 不调用 onCreateViewHolder 或 onBindView

    没有收到任何错误 所有数据似乎都有效 由于某种原因 没有调用与视图相关的方法 我已确定以下事项 getItemCount 是唯一被调用的适配器方法 并且返回一个正整数值 我知道这将是你们将要查看的区域 构造函数正在被调用 成员变量有效 Pa

随机推荐

  • SAPUI5 - Sap.m.RadioButton 值字段?

    sap m RadioButton已经只有Text属性并且没有Value属性 虽然我可以通过使用自定义数据来解决这个问题 但我是否遗漏了什么 sap ui commons RadioButton有一个key场地 另外 将值绑定到单选按钮组的
  • 为什么在 Java 中无法创建 MAX_INT 大小的数组?

    我读过这个问题的一些答案 为什么我无法创建大尺寸的数组 https stackoverflow com questions 31382531 why i cant create an array with large size and ht
  • 您如何知道用户在浏览器中输入的编码是什么?

    I read Joel 关于字符集的文章 http www joelonsoftware com articles Unicode html因此我采纳了他的建议 在我的网页和数据库中使用 UTF 8 我不明白的是如何处理用户输入 正如 Jo
  • JSF 页面未呈现为 HTML

    我正在尝试运行一个非常基本的 JSF 页面 使用 Websphere 7 0 作为服务器 因此我尝试坚持使用 JSF 1 2 浏览器不渲染 html 我的意思是它只是显示所有 html 代码 包括 doctype 等 我的第一个猜测可能是它
  • Codeigniter 分页链接转到 404 Page Not Found

    我有这个与搜索结果分页 http www andyhawthorne co uk how to paginate search results with codeigniter 实施到我的 CI 项目中 但是我无法让我的分页链接转到下一页
  • 什么时候适合使用CacheItemRemovedCallback?

    我有一个每天更新一次的大型数据集 我正在缓存对该数据进行昂贵查询的结果 但我想每天更新该缓存 我正在考虑使用 CacheItemRemovedCallback 每天重新加载我的缓存 但我有以下问题 是不是可以在我过期之前调用 CacheIt
  • Android 中的噪音消除是如何工作的?

    我碰到this http www talk3g co uk showthread php 7655 Google Nexus One Noise Cancellation Microphone win相对较旧的帖子 描述了 Nexus On
  • Django TestCase 测试顺序

    如果测试类中有多个方法 我发现执行顺序是按字母顺序排列的 但我想自定义执行顺序 如何定义执行顺序 例如 testTestA 将先于 testTestB 加载 class Test TestCase def setUp self def te
  • Python:在一行中拆分、剥离和连接

    我很好奇它们是否是某种蟒蛇魔法 我可能不知道能完成一些无聊的事情 给定行 csvData append join line split strip for x in L 我正在尝试分割一条线 修剪它周围的空白 然后加入 问题是 因为数组是从
  • 关于龙的可怕代码注释是什么?

    这句话被用来警告代码正在做一些严重的特技 我对此的谷歌搜索是空的 但我记得很久以前有人在谷歌上搜索过这个短语 谎言中的龙 龙睡在这里 Bah 这里是龙 http en wikipedia org wiki Here be dragons 最
  • 使用 google API、jQuery 从地理编码中提取 + 4 邮政编码

    我正在 jQuery 的帮助下使用谷歌 API 进行地理编码 以下是我尝试过的代码 jQuery document ready function var geocoder new google maps Geocoder jQuery Ad
  • 在“功能”选项卡上添加背景模式

    我使用的是 Xcode 6 3 我刚刚在功能选项卡上添加了蓝牙背景模式 需要执行一个步骤 即 将 所需的背景模式 键添加到您的 info plist 文件中 然而苹果文档 https developer apple com library
  • BeautifulSoup soup.prettify() 给出奇怪的输出

    我正在尝试解析一个网站 稍后我将在我的 Django 项目中使用它 为此 我使用 urllib2 和 BeautifulSoup4 然而 我却没能得到我想要的 BeautifulSoup 对象的输出很奇怪 我尝试了不同的页面 它有效 输出正
  • 在 Scala 2.10 中获取 java.lang.Class[T] 的 Scala 类型

    我在看scala 反射概述 http docs scala lang org overviews reflection overview html我想知道是否可以使用java lang Class
  • Python numpy 减法没有负数(4-6 给出 254)

    我想减去2gray人脸彼此之间可以看到差异 但我遇到了一个问题 例如减去 4 6 给出 254 而不是 2 或差值 2 print type face
  • 检查 JQuery 中的单选按钮

    我需要以编程方式检查单选按钮的值 该表格有一个id并且输入类型显然有一个名称 但没有 id 到目前为止 我成功运行的唯一代码是 input name my name eq 1 attr checked checked 但我希望能够通过明确提
  • 多个resque工作模式创建额外的进程

    我需要启动 4 个 resque 工作人员 所以我使用了以下命令 bundle exec rake environment resque workers RAILS ENV production COUNT 4 QUEUE VERBOSE
  • Python 中的调用是如何工作的? [复制]

    这个问题在这里已经有答案了 对于我正在开发的一个项目 我正在实现一个链表数据结构 它基于对的概念 我将其定义为 class Pair def init self name prefs score self name name self sc
  • d3.js 中的地理图表

    我正在寻找一些指导或示例如何在 d3 js 中制作地理图表 我需要类似的东西this one https developers google com chart interactive docs gallery geochart在谷歌图表中
  • ESB 应该如何打包/部署?

    我正在尝试了解 Apache Camel 它似乎是一个轻量级的 ESB 如果我正确理解 Camel ESB 那么您可以将 Camel Route 视为节点和边的图 每个节点都是路由上的端点 可以消耗 产生消息 每条边都是两个不同端点 1 个