Java 在驼峰路径中实现计数器变量
我试图从数据库中获取员工详细信息列表,并使用RESTAPI将其推送到外部系统。我能够为上述流程创建一条路线 另外,我想知道创建记录和失败记录的计数。因此,我创建了一个计数器,将属性值设置为0,然后增加属性值。当我尝试增加属性值时,它总是与我初始化的相同Java 在驼峰路径中实现计数器变量,java,spring,apache-camel,dsl,spring-camel,Java,Spring,Apache Camel,Dsl,Spring Camel,我试图从数据库中获取员工详细信息列表,并使用RESTAPI将其推送到外部系统。我能够为上述流程创建一条路线 另外,我想知道创建记录和失败记录的计数。因此,我创建了一个计数器,将属性值设置为0,然后增加属性值。当我尝试增加属性值时,它总是与我初始化的相同 from("direct:test") .setBody(constant("select name as name, location as location,mobile as mobile from
from("direct:test")
.setBody(constant("select name as name, location as location,mobile as mobile from employee"))
.to("jdbc:testdb")
.process(exchange ->{
// Custom Logic which will convert list of Employee Details
})
.split(body())
.setProperty("successrec", simple("0"))
.setProperty("failurerec", simple("0"))
.doTry()
.setProperty("successrec", simple("${property.successrec++}"))
.to("http://test/upload/employee")
.doCatch((Exception.class)).process( exchange ->{
Integer failureRecords=exchange.getProperty("failurerec",Integer.class);
exchange.setProperty("failurerec", failureRecords++);
});
我甚至尝试使用processor来设置和获取属性值,但没有成功。是否有任何方法可以让计数器覆盖成功和失败记录。属性是exchange的本地属性,因此您可能需要使用插入全局计数器 创建路由策略:
类MyRoutePolicy扩展了RoutePolicySupport{
私有AtomicInteger计数器=新的AtomicInteger();
@凌驾
public void OneExchange开始(路由、Exchange){
exchange.setProperty(“计数器”,计数器);
}
公共int getCounter(){
返回计数器get();
}
};
将策略与路由关联:
MyRoutePolicy策略=新建MyRoutePolicy();
来自(“直接:测试”)
.路线政策(政策)
...
这是一种可能的解决方案,但您也可以使用一个全局计数器,根据您的需要,它可能更简单。感谢您提供的信息,无法在文档中找到任何相关信息。你能给我举个例子吗?这可能会有帮助,谢谢,我是骆驼队的新手,我无法用上面的方法来理解它。另外,计数器中还有一个全局参数部分。所以我使用了ThreadLocal,它工作得很好…添加了一个示例在创建交换时调用策略,所以是thread saafe