当前位置: 首页 > 知识库问答 >
问题:

使用Camel处理器作为自定义组件

欧阳飞
2023-03-14
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个答案

骆磊
2023-03-14

当扩展ProcessorEndpoint时,createProducer()的生产者将处理交换,即Producer.process(exchange exchange)。

这就是为什么您看到使用SampleProducer。但是如果您想委托给处理器,您可能只需将代码改为:

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

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

 类似资料:
  • 我创建了一个自定义endpoint来利用某些数据的异步处理。现在,我想将处理结果传送到另一条路由,以便将结果保存在数据库中,但我不知道如何访问异步处理器中的producer模板。

  • 我来找你是因为我需要你的帮助。 在我的文件camel-context.xml中,我调用了一个存储过程来获取用户的信息。我需要解决的是: 如果存储过程不返回数据,则发送带有超文本传输协议代码404的UserNot的异常(我已经拥有该类)。 我一直在寻找如何做这件事,但找不到任何可以帮助我的东西。我刚刚开始使用这个框架,所以提前非常感谢您的帮助。 这里我的代码:

  • 如果数据库表中的列名和等价的javabean对象名称不相似,那么我们可以通过使用自定义的对象来映射它们。 看下面的例子。 为了理解上述与DBUtils相关的概念,让我们编写一个将运行读取查询的示例。创建一个示例应用程序。 更新在DBUtils入门程序中创建的文件:MainApp.java。 按照下面的说明编译并运行应用程序。 以下是的内容。 以下是文件的内容。 以下是文件的内容。 完成创建源文件后

  • 我试图加载一个自定义的NiFi处理器,但无法让NiFi加载所有的.nar依赖项,尽管尝试了各种pom.xml配置。我在SO上遇到过一些类似的问题,但还没有找到这个问题的答案。

  • 我使用抽象处理器创建了一个自定义注释和注释处理器。这意味着我想在编译之前进行注释处理。我将自定义注释和处理器导出为Jar,并尝试将其与简单的java测试程序一起使用。我确信在编译时它会找到我的java处理器类,但不知何故,我并没有得到我在控制台上期望的o/p。下面是我的处理器中处理方法的代码。 此外,我故意使用以便我得到一个版本警告,它确认当我执行一个测试类时,它找到了我的注释处理器。 这里是我的