网站模块是什么,个人网站建设考察报告,网站服务器管理系统,做网站经营流量perl大骆驼和小骆驼因此#xff0c;最近我重新燃起了对Apache Camel的工作方式的兴趣。 Camel是一种功能强大的集成工具#xff0c;使用非常广泛#xff0c;但是只要我将其投入使用#xff0c;我都会忍不住想“好吧#xff0c;这到底是怎么做的#xff01;” …我只是有一… perl大骆驼和小骆驼 因此最近我重新燃起了对Apache Camel的工作方式的兴趣。 Camel是一种功能强大的集成工具使用非常广泛但是只要我将其投入使用我都会忍不住想“好吧这到底是怎么做的” …我只是有一个诀窍就是不仅仅接受它的美妙。我想知道为什么。 如果您过去一直关注我的一些文章您会记得我确实有一篇博客文章深入探讨了Camel DSL API的工作原理 。 更具体地说您如何神奇地键入“ from..”“ choice..”“ simple..”等并且DSL足够聪明足以知道您的意思以及如何将所有内容串在一起。 如果您对所有工作方式都感兴趣请在该职位上发挥最大作用。 请注意其中有一些冗长而冗长的UML类图。 因此如果您回想起以前的文章则DSL无论是Java DSLXML还是Scala或任何其他都具有非常特殊的作用。 它可以帮助集成路线的作者非常清楚地表达自己的意图然后将其构建为称为RouteDefinition的抽象。 RouteDefinition是您路线的“蓝图”并且了解您所有的处理器 EIP和组件 。 您可以考虑从..调用的任何时间是新RouteDefinition的开始。 其余路线赋予其形状。 因此对于每个from..都有一个到RouteDefinition的一对一映射。 因此当CamelContext启动时它会收集所有RouteDefinition并开始从它们中构建一条路由。 看一下DefaultCamelContextdoStartCamel作为所有这些的入口点。 除其他重要事项外例如将注册表端点启动基本服务管理等放在一起您将看到对DefaultCamelContextstartRouteDefinitions的调用。 这告诉RouteDefinitions构建Route对象即路由交换的实际使用者输入处理器输出的管道 。 下一个方框将详细介绍这一切的工作原理。 就像以前有关Camel内部工作的博客文章一样这个细节主要是给我的即在将来我忘掉其中一半的时候我想复习一下。 一些想为骆驼做贡献的人可能会发现这很有趣。 对于其他所有人。.随时跳过此块。 –开始详细部分– DefaultCamelContext将遍历每个RouteDefinition 并将尝试构建Route S和RouteContext S的列表。 快速绕道 什么是RouteContext 简单来说您可以将其视为Route的大脑以及路由特定配置所处的地方流缓存跟踪处理故障等。 它了解“来自”消费者管道的其余部分拦截策略路由策略并能够构造将在交换机上运行的Route。 这可能会造成混淆因为在实际上它们正在构建RouteContext和构建Route时有许多名为“ addRoutes”的方法的调用。 但是将其放在一边。 因此对RouteDefinitionaddRoutes..的调用将返回RouteContext对象的列表。 它还将填充最初为空路由的列表。 这里的重数基本上是n到n。 因为您可以具有RouteDefinition的多个输入 例如通过将多个from..。from..串在一起所以可以预期到路由的单个1-to-1 RouteContext以及一对PER from 。 因此在前面的示例中列表中将有两个RouteContext和两个Route。 在对addRoutes..的调用中它还会尝试将输出定义转换为真实的Processors。 处理器是Route对象的基础。 每个处理器都是基于其各自的定义例如ChoiceDefinitionLogDefinition构建的但最终被包装在Channel对象中并添加到RouteContext中。 因此总结一下 RouteDefinition将创建RouteRouteContext并将各个输出定义转换为Processors。 创建这些路由后将根据新创建的Route RouteContext对创建一个RouteService 并使用CamelContext建立该路由服务以便以后启动和控制路由的生命周期。 –结束详细部分– 因此…一旦初始化了RouteService 就需要启动路由这取决于它们是否自动启动以及它们的顺序。 再次看一下DefaultCamelContextdoStartCamel 对底部的是对DefaultCamelContextdoStartOrResumeRoutes的调用。 这将循环遍历我们的RouteService S并为路线确定正确的启动顺序然后启动它们。 路线分为两个阶段 热身在热身阶段我们浏览所有路径并启动所有“输出”或处理器/设备。 骆驼要注意确保 首先发生这种情况是因为我们不希望在所有“输出”可用之前就启动“输入”或使用方。 启动/恢复启动使用者 这是特定于端点/组件的。 例如JMS使用者将开始侦听目的地。 请注意在生命周期的这些阶段的所有阶段都有可以调用的回调以便您可以插入此生命周期并添加自己的自定义启动代码以与您的应用程序协调。 查看一下Camel API了解可用的回调类型LifecylceStrategy 那里有。 这是将路由定义转换为实际路由然后启动的方式。 在第二部分中我希望探讨如何将处理器链接在一起包括使用AsyncProcessor进行更高级的链接。 参考在Christian Posta – Software Blog博客上使用我们的JCG合作伙伴 Christian Posta 使用k最近邻遗传算法创建价格模型 。 翻译自: https://www.javacodegeeks.com/2013/08/from-inside-the-code-camel-routing-engine-part-i.htmlperl大骆驼和小骆驼