java - 如何使用 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" +
"¶meters=#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
有没有一种“流畅”的方法来解决这个问题?
解决方案
推荐阅读
- angular - 当数据源中的整列为空时,如何隐藏 Angular Material 表中的列?
- angular - 对 adf 数据表中的数字列进行排序
- android - 如何从 Edittext 中检索多行文本?
- angular - 无法在 NativeScript RadDataForm 中设置未定义的属性“loadSuggestionsAsync”
- aem - 如何让“Sling 模型的委托模式”工作?
- html - 当 Ionic 4 中的记录数增加时,如何使滚动按钮自动可见?
- docker - 流浪码头供应商 - 无法卷曲到本地主机
- excel - 如果单元格已经用绿色突出显示,如何忽略它
- java - 用于捕获/记录所有流量的 Netty 处理程序
- excel - 在不存在的链接上使用 XMLHTTP 处理错误