理解骆驼和保险丝



在我从Apache camel网站下载的一个camel项目中,在camel-context.xml中,我看到路由、cxf、活动mq被定义并用于发送和接收消息。如果所有这些组件都可以在不使用FUSE的情况下构建,并且camel可以独立运行——在哪个场景/用例中会使用FUSE?

在我的项目中,要求所有来自Client的web服务调用都要经过FUSE,以使其异步(我的经理每次都提到FUSE)。如果我们可以单独使用camel来实现这一点——我正在努力理解FUSE在这里的位置——根据我的理解,我就不需要FUSE了?

Apache Camel本质上是一个可供其他应用程序、服务器等使用的库。例如,您可以在Java应用程序中使用Apache Camel来创建web服务客户端,也可以将其嵌入WAR应用程序中,允许您的网站从FTP站点读取,然后将其转换为其他消息。

你需要明白的是。ApacheCamel需要在它不适合自己运行的地方使用。因此,它需要某种运行时容器来将Camel上下文作为星型。

Fuse是一个运行时容器,用于启动和管理ApacheCamel。Fuse是一个ESB,在这里运行apachecamel是有意义的,因为ESB通常是您的集成点,而camel是一个集成库。你可以在这个答案中阅读更多关于它的内容。

Apache Camel是一个框架,或使用其他框架的工具箱,用于处理它,并允许使用简单dsl语言的开发人员描述你想要做的事情。这就是开发方面。

当然,应用程序也必须运行,所以你需要一个运行时环境。这可以是一个简单的jar,也可以是Fuse的osgi容器。osgi容器的好处在于,您可以访问不可用的选项和功能。您可以查看已部署的解决方案、检查日志、启动和停止流以及其他许多功能。

Camel是描述应用程序如何工作的框架,Fuse是它可以运行的地方。

Fuse是一个容器。例如,您可以构建一个捆绑包,而不使用apachecamel。假设您想要打印"Hello",因此不需要导入apachecamel。但是,如果您喜欢在项目中使用esb功能,例如在发生某些事情时打印Hello,则需要导入apachecamel库。

最新更新