骆驼最佳实践 - 我应该在哪里调用外部Web服务?在Bean,处理器或直接从路由?

时间:2017-10-30 04:06:53

标签: java apache-camel

在我的项目中,我需要调用多个外部Web服务,然后依赖于Web服务的响应我可以对交换的标题/正文进行一些更改,然后路由将决定下一步需要做什么(例如,直接到另一条路线)。假设我在不同的“服务”POJO类中包含对外部Web服务的调用,例如ProductService以获取产品列表或更新现有产品等。那么我应该在哪里放置代码来触发Web服务?

  1. 将productService.getProducts()直接放在路线的流程中

  2. 创建一个继承自Processor的类,在process()方法中我将调用productService.getProducts()

  3. 创建一个bean,它包含对ProductService实例的引用并从此处包装触发器服务方法

  4. 基本上我想使用选项(2)或(3),原因是因为我不希望路由与调用外部Web服务的细节混淆。所以我只是想知道它在EIP方面被认为是一种“反模式”吗?

1 个答案:

答案 0 :(得分:3)

Camel的重点是处理对外部系统/服务的调用。把那个逻辑放在你的路线上。将业务逻辑和转换放在处理器或bean中。它也可以更容易地对您的路线进行单元测试。