我想让自定义的camel处理器充当自定义组件。我尽可能从http://camel.apache.org/processor.html - section - >读取它。将处理器变为完整组件。 这里创建的自定义处理器将在我打电话时完成工作 的 someComponent://动作1的param1 =值1&安培; param2的=值2 在路线上。
为此,我使用maven catalog创建了一个示例组件。这创建了Endpoint,Consumer,Producer和Component类。
链接说该组件应该返回我已经完成的ProcessorEndpoint。 所以,Endpoint看起来如下
public class SampleEndpoint extends ProcessorEndpoint{
// Automatically Generated code begins
public Producer createProducer() throws Exception{
return new SampleProducer(this, processor);
}
public Consumer createConsumer() throws Exception{
throw new UnsupportedOperationException("This operation is not permitted....");
}
// Automatically generated code ends here
//added below to make custom processor work for custom component
public Processor createProcessor(Processor processor){
return new SampleProcessor();
}
}
但是,这里处理器中的代码没有被执行,而是SampleProducer中的代码被执行。 在这里,我希望处理器被执行。我该怎么做?
答案 0 :(得分:2)
扩展ProcessorEndpoint时, createProducer()中的Producer将处理交换,即 Producer.process(Exchange exchange)。
这就是您正在使用 SampleProducer 的原因。但是,如果您想委托给处理器,您可能只需将代码更改为:
return new SampleProducer(this, new SampleProcessor());
我最好的建议是附加一个调试器并在SampleEndpoint,SampleProducer和SampleProcessor方法中放置断点,以查看调用的内容和时间。