3

我目前正在开发一个不使用骆驼的交易应用程序。它基本上接受交易,进行一些处理并将详细信息发送到外部系统。

我们现在需要与 3 个新系统集成,其中 2 个系统使用 FTP,1 个系统使用 JMS。

我想在我的应用程序中使用 Camel 进行这些集成。我已经阅读了大量的骆驼在行动,但我不清楚我们如何才能开始我们的骆驼路线

本质上,我们不想对现有应用程序的任何部分进行过大的修改,因为它在生产中运行良好。

在现有的应用程序中,我们生成一个贸易价值对象,并从该对象中生成一个我想要启动骆驼集成的对象。我没有可以从中启动路由的数据库表或 jms 队列。

我快速浏览了 Camel in Action 书中关于 Bean 路由和远程处理的章节,但我想在继续任何步骤之前先获得人们的建议。这种集成的最佳方法是什么?

谢谢达米安

4

2 回答 2

4

您可以使用 Camel 的POJO 生产功能,该功能允许您从 Java bean 向 Camel 端点发送消息。如果您不需要 JMS 或 DB,您可以使用“direct:”“seda:”“vm:”端点作为<from>路由的一部分。

于 2012-05-25T11:16:19.867 回答
3

Pojo 生产正如 Konstantin V. Salikhov 所说。但是,您需要确保您有一个 spring 应用程序并且正在使用 spring 扫描您的 bean 或连接它们。

“如果一个 bean 是在 Spring XML 中定义的或使用 Spring 组件扫描机制扫描的,并且使用了 a 或 CamelBeanPostProcessor,那么我们会处理许多 Camel 注释来执行各种操作,例如注入资源或生成、使用或路由消息。”

如果这种方法会在您的应用程序中添加太多更改,您可以使用ProducerTemplate并调用直接端点。(或就此而言的 SEDA)。

这里的协议选择可能很重要。直接协议是一个安全的选择,因为开销只是一个方法调用。此外,异常将通过直接端点很好地传播,事务也是如此。由于 SEDA 端点是异步的(如 JMS)但不具有持久性,因此在发生崩溃时丢失飞行数据的可能性很小。这可能是也可能不是问题。但是,在高负载下,SEDA 协议会更好地进行分级,并为您的应用程序提供更好的负载峰值抵抗能力。

于 2012-05-26T15:11:14.660 回答