这里提出了一个类似但更普遍的问题: Camel 处理器中的业务逻辑与服务端点。
现在考虑以下流程(E1 和 E2 代表处理器,它们不是骆驼流程中的端点),我使用参数(p,q)触发:
Route: E1 -> E2
E1本身发出带有参数(p,q)的 HTTP 请求,接收响应数据d (sync) 并将其转发给E2,E2 继续基于(p,q,d)进行处理。所以它本质上用额外的数据丰富了输入。
被调用的端点包含要被集成的数据,即这不会改变并且将来不需要可配置。
我尝试了两种解决方案,这两种解决方案对我来说似乎都是错误的:
- 使用
http4:url
端点并捎带消息头中的(p,q)(或交换的属性)。 - 使用显式/以编程方式发出 http 请求、处理响应并转发预期(p,q,d)的处理器。为方便起见,我将
producerTemplate
其发送到http4:url
骆驼上下文中。
第一个问题是它添加了很多样板生产者等,并使实际路线非常模糊。第二种方法允许将处理卸载到一个新类中(而不是将其混合到路由中),但仍然需要骆驼上下文并依赖于此。
对此有何建议。除了“不要将业务逻辑与布线混合”等更抽象的语句外,我找不到任何东西。
*添加了真实用例*
E1 获取两个日期(一个时间跨度)和一个部门名称,获取指定部门在指定时间跨度内的所有名称。然后(上面我忽略了这个细节)名称被拆分,并且对于每个单独的名称,所有数据都已保存在指定的日期范围内。对于这最后一步,需要来自第一个输入的日期(因此这些需要通过整个路线传递)。
谢谢,马库斯