使用Camel Processor作为自定义组件

时间:2014-02-06 17:13:32

标签: components apache-camel

我想让自定义的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中的代码被执行。 在这里,我希望处理器被执行。我该怎么做?

1 个答案:

答案 0 :(得分:2)

扩展ProcessorEndpoint时, createProducer()中的Producer将处理交换,即 Producer.process(Exchange exchange)

这就是您正在使用 SampleProducer 的原因。但是,如果您想委托给处理器,您可能只需将代码更改为:

return new SampleProducer(this, new SampleProcessor());

我最好的建议是附加一个调试器并在SampleEndpoint,SampleProducer和SampleProcessor方法中放置断点,以查看调用的内容和时间。