问题概述
我正在使用 apache camel 2.4,并被要求在我们的一个 maven/spring 项目中设置一个内部消息传递系统。这可能看起来有点奇怪,但这是因为他们计划在以后将一些功能分离出来,并希望已经涵盖了集成方面。
所需的功能
基本上我有一个 bean (A) 进行一些处理并创建一个可序列化的对象。我有另一个 bean (B),它接受所述可序列化对象并执行我们希望异步发生的一些额外处理。
计划是让 bean (A) 通过 Camel 的 SEDA 组件生成一条消息,并让 bean (B) 在内部使用它。
我做了什么
到目前为止,我已经通过以下方式实现了这一点;
- 创建一个定义路由的 RouteBuilder 实现。
- 在春季配置我的 CamelContext 以使用所述路线构建器。
- 创建一个以 CamelContext 作为属性的“生产者”类,并使用它创建一个用于发送消息的 ProducerTemplate。- 由 bean (A) 使用。
- 将 bean (B) 定义为消费者(通过配置的 RouteBuilder 中的“bean:beanB”)。
问题
这可行,但是,作为骆驼的新手,我不确定这是否是实现所需功能的好方法。进一步查看 Camel 文档后,似乎有很多不同的方法可以做同样的事情(在 spring 中配置路由,而不是定义 RouteBuiler 实现,使用 SedaEndpoint 实现,在 spring 中定义 ProducerTemplate 并将其用作依赖而不是 CamelContext 本身.....)。
实现所需功能的标准做法/最佳方法是什么?