扩展Camel DSL

suzh9iv8  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(156)

我有一个带有自定义聚合器的路由,它看起来像这样:

我想 Package 细节,这样开发人员就可以在他们的路由中添加 * 一行 * 来获得功能。我可以 Package 这些行,这样我就有了一个扩展ProcessorDefinition的类,然后将这个ProcessorDefinition添加到需要它的路由中,这样它看起来就像是DSL的扩展吗?如果可以,addOutput()方法是这样做的吗?
大概是这样的:

from("file:" + FILE_PATH + "?noop=true")
        .log("Detected file")
        .split().tokenize("\n")
        .streaming()
        .unmarshal(bindy)

        .addProcessorDefinition(new MyCustomAggregation())

        .to("direct:handleAggregatedRecords");

在哪里

MyCustomerAggegation extends ProcessorDefinition
wfauudbj

wfauudbj1#

为了得到类似的结果,我以下面的方式使用Lombok @ExtensionMethod

@ExtensionMethod(MyRouteBuilder.Extensions.class)
public class MyRouteBuilder extends RouteBuilder {

  @Override
  public void configure() {
    from("direct:in")
      .debugLog("Incoming message ${body}");
  }

  @UtilityClass
  public static class Extensions {
    public static ProcessorDefinition<?> debugLog(
        @NonNull ProcessorDefinition<?> route, String logMessage) {

      return route
          .log(LoggingLevel.DEBUG, "debug-logger", logMessage);
    }
  }
}

相关问题