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

标签 architecture soa apache-camel

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

将 Camel 仅用于调解和编排,使用处理器作为过滤器,而不是作为业务逻辑的容器,似乎更清晰地分离了关注点。但是,我不认为此时需要 EJB 容器,而且似乎我需要一个来托管 MDB。

更清洁的架构与更小的足迹、更少的技术——有人对此有想法、观点或强烈感受吗?

最佳答案

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

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

  • 否则,对于自包含的业务逻辑(尤其是遗留集成),最好使用 POJO 或 WebServices。这提高了可测试性并使您的应用程序更加模块化等。然后,您可以将 Camel 用于以下...
  • 使用 Processors 与这些服务交互, Bean BindingCXF
  • 将这些服务连接到路由中
  • 管理/监控消息流,异常处理

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

    总而言之,有很多方法可以对其进行切片。 Camel 轻巧、灵活,旨在简化与现有技术的集成,而不是取代它们......祝你好运

    关于architecture - Camel 处理器中的业务逻辑与服务端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9413045/

    相关文章:

    java - Camel Salesforce 组件 REST API salesforce :query cannot retrieve records

    java - DAO 应该扩展数据对象吗?

    json - 带有 JSON 网络服务的 Node.js SOA - 配置

    soa - 服务编排、服务聚合和服务增强之间的区别

    grails - 在运行时创建 JMS 队列

    java - 如何使用驼峰聚合将一条消息聚合到多个组中?

    c# - 使用 C# 识别 CPU 架构类型

    architecture - 3层模式和大量数据

    database - 微服务认证/授权架构

    java - 如何在面向服务的架构中使用mybatis 提高效率?