我正在尝试实现一个 Camel 组件/处理器,它接受一个输入并产生多个输出消息,类似于拆分器。与 Splitter 一样,输出应该发送到路由中的下一个处理器/端点。
我查看了 Splitter 和 MulticastProcessor 类,希望可以重用它们或使用类似的逻辑。据我了解,这个想法是为每个输出创建一个新的 Exchange 并发出它们。为此,我需要提供要写入输出的端点。如果我在处理器类中动态创建端点,则此方法有效;我的要求是将输出发送到路由中配置的端点。也就是在下面的路径中,mycomponent 需要写入(多次)到 file:output。
<route>
<from uri="file:input"/>
<to uri="mycomponent:OrderFlow?multi.output=true"/>
<to uri="file:output" />
</route>
在 Splitter 的情况下,它由可以访问输出处理器/端点的 SplitDefinition 类实例化。
a) 从处理器内部是否可以访问配置的输出处理器/端点?
b)如果不是,我应该为我的处理器编写一个 ProcessorDefinition 类吗?对此的任何指示都会有所帮助。
Petter 在下面建议的两个解决方案是,
a) 注入 Producer 模板 b) 将 Splitter 组件与方法调用一起使用,而不是编写新组件。