Camel处理器中的业务逻辑与服务端点

时间:2012-02-23 12:26:28

标签: architecture soa apache-camel

在Camel路由中,我是否应该考虑将业务逻辑放在离散托管的bean端点(如消息驱动的bean或Web服务)中,而不仅仅是在Camel处理器中实现它?

似乎更清晰地分离了使用Camel进行调解的问题&编排,使用Processor作为过滤器,而不是作为业务逻辑的容器。但是我现在并不认为需要一个EJB容器,而且我似乎需要一个来容纳MDB。

如此清洁的架构与更小的占地面积,更少的技术 - 是否有人对此有任何想法,观点或强烈的感受?

2 个答案:

答案 0 :(得分:11)

我通常使用Camel来执行以下操作......

  • 任何component集成(文件,jms,http等)
  • 实施EIP逻辑(基于内容的路由,过滤器,限制等)
  • 基于计时器的流程(使用timerquartz
  • 异常处理(重试逻辑,错误记录/通知/排队)

否则,对于自包含的业务逻辑(尤其是遗留集成),最好使用POJO或WebServices。这提高了可测试性并使您的应用程序更加模块化等。然后,您可以使用Camel进行以下操作......

  • 使用ProcessorsBean BindingCXF
  • 与这些服务进行交互
  • 将这些服务连接成路线
  • 管理/监控消息流,异常处理

对于长时间运行的进程,Camel可以通过各种asycnhronous模式/技术(JMS,CXF,轮询使用者,预定作业等)来促进这一过程,并使您可以控制threading ......

所有人都说,有很多方法可以分割它。 Camel重量轻,灵活,旨在简化与现有技术的集成,而不是取代它们......祝你好运

答案 1 :(得分:0)

您应该尝试将路由或过滤等技术问题与业务逻辑分开。

所以最重要的部分是不要将它们混合在同一个类中。将它们分成离散的部署单元可能有意义,但不太重要。

可以很好地使用Camel来实现“消息驱动的bean”。只需使用pojos + JAXB注释定义数据结构或从XSD生成它们。然后,您可以使用camel pojo消息传递将这些消息连接到http,jms甚至文件端点。

请参阅http://www.liquid-reality.de/x/NoBe

当您在OSGi上运行时,一个明显的选择是将您的服务作为OSGi服务提供。然后可以在单独的捆绑包中使用Camel将这些服务连接到传输。这样你就可以使你的服务完全是普通的java。

您还可以使用CXF将您的服务作为SOAP服务或其他资源提供。我喜欢使用带有驼峰的XML而不是JMS,因为它更轻,并且由于jms而在高可用性和负载平衡方面具有一些很好的优势。