骆驼 - 与现有应用程序集成

3
我目前在一款不使用Camel的交易应用程序上工作。它主要接收交易,进行一些处理并将详细信息发送到外部系统。
现在我们需要集成3个新系统,其中2个系统使用FTP,1个系统使用JMS。
我想在我的应用程序中使用Camel来进行这些集成。我已经阅读了《Camel in Action》的很大一部分,但我不清楚如何启动我们的Camel路由。
基本上,我们不想太大幅度地修改现有应用程序的任何部分,因为它在生产中运行良好。
在现有应用程序中,我们生成一个Trade Value对象,并从这个对象中启动我们的Camel集成。我没有数据库表或JMS队列可以从中启动路由。
我快速浏览了《Camel in Action》书中“Bean路由和远程”章节,但在采取任何步骤之前,我想先听取其他人的建议。对于这种集成,最好的方法是什么?
谢谢 Damien
2个回答

4
你可以使用Camel的POJO生成功能,它允许你从Java Bean向Camel端点发送消息。如果你不需要JMS或DB,你可以使用"direct:""seda:""vm:"端点作为你路由的<from>部分。

感谢您的回复。您需要进行额外的配置才能获取带有@Produce注释的bean吗?我在那里尝试了一个测试,但是我无法从bean中获取消息到路由。 - Damien
3
@Damo,Camel发行版中有一个示例项目(在此http://camel.apache.org/pojo-messaging-example.html中描述),你可以在那里看到一个配置示例。 - Konstantin V. Salikhov

3
如Konstantin V. Salikhov所述,需要生成Pojo。但是,您需要确保拥有一个Spring应用程序并使用Spring扫描您的bean或将它们连接起来,如果一个bean在Spring XML中定义或使用Spring组件扫描机制进行扫描,并且使用了@Produce或CamelBeanPostProcessor,则我们会处理多个Camel注释以执行各种操作,例如注入资源或生成、消费或路由消息。
如果这种方法会给您的应用程序增加太多的更改,您可以使用ProducerTemplate并调用直接端点。 (或者使用SEDA)。
这里协议的选择可能很重要。直接协议是一个安全的选择,因为开销仅仅是一个方法调用。此外,异常将通过直接端点良好传播,事务也将传播得很好。由于SEDA端点是异步的(像JMS一样),但不具有持久性,因此在崩溃的情况下有可能丢失正在飞行中的数据。这可能是一个问题,也可能不是一个问题。然而,在高负载下,SEDA协议的阶段更好,可以使您的应用程序更好地抵抗负载峰值。

谢谢你的回复,Petter。这让我很有感触。 - Damien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接