首页 > 解决方案 > 如何使用 Apache Camel 中的 fluent Java API 向注册表添加内容

问题描述

我正在寻找一种在检索和处理一些数据后使用 JPA 查询中的参数在数据库中设置值的方法。

使用流利的构建器,我正在寻找一种方法来获取已获取记录的 id,因此可以在 de 数据库中设置一个标志。

public void configure() throws Exception {
    Map<String, Object> params = new HashMap<>();


    from("timer:number?period=1s")
        .routeId("ccmd-route")
        .to("jpa:com.example.Person?namedQuery=getNonFetched")
        .split(body())
        .process(exchange -> log.info(exchange.getMessage().getBody().toString() + "exchange id: " + exchange.getExchangeId()))
        .process(exchange -> params.put("id", exchange.getMessage().getBody(Person.class).getId()))

        .to(String.format("jpa:%1$s" +
            "?namedQuery=setIsFetched" +
            "&parameters=#params", Person.class));
}

到目前为止,我已经能够在 Map 中设置 id 值,但我认为需要将其添加到注册表中才能用于#params

因此,我想将 Map 添加到注册表中:

...

Map<String, Object> params = new HashMap<>();

CamelContext context = getContext();
Registry registry = context.getRegistry();
registry.put("params", params);

from("timer:number?period=1s")
...

但这给出了一个错误Cannot resolve method put()

我从Github 上的一个例子中得到了这个,但他们在那里使用SimpleRegistry

有没有一种“流畅”的方法来解决这个问题?

标签: javaapache-camelfluent

解决方案


推荐阅读