在我的项目中,我需要调用多个外部Web服务,然后依赖于Web服务的响应我可以对交换的标题/正文进行一些更改,然后路由将决定下一步需要做什么(例如,直接到另一条路线)。假设我在不同的“服务”POJO类中包含对外部Web服务的调用,例如ProductService以获取产品列表或更新现有产品等。那么我应该在哪里放置代码来触发Web服务?
将productService.getProducts()直接放在路线的流程中
创建一个继承自Processor的类,在process()方法中我将调用productService.getProducts()
创建一个bean,它包含对ProductService实例的引用并从此处包装触发器服务方法
基本上我想使用选项(2)或(3),原因是因为我不希望路由与调用外部Web服务的细节混淆。所以我只是想知道它在EIP方面被认为是一种“反模式”吗?
答案 0 :(得分:3)
Camel的重点是处理对外部系统/服务的调用。把那个逻辑放在你的路线上。将业务逻辑和转换放在处理器或bean中。它也可以更容易地对您的路线进行单元测试。