, Apache Camel : File to BeanIO and merge beanIO objects based on id아파치 카멜 : GroupedExchangeAggregationStrategy 그룹 대신 메시지 본문 그룹 GroupedExchangeAggregationStrategy를 사용 EmployeeDetails 시도 다른 스레드에 연속으로
아래의 DefaultExchange
from("seda:aggregate").aggregate(simple("${body.id}"), new
MergeAggregationStrategy()).completionSize(3).log("Details - ${header.details}").to("seda:formList");
from("seda:formList").aggregate(new
GroupedExchangeAggregationStrategy()).constant(true).completionTimeout(10)
.process(EmployeeDetailsBeanProcessor).log("Final list of groupedExchangeAggr ${body}")
.log("FILE PROCESSING COMPLETED");
EmployeeDetailsBeanProcessor :
public class EmployeeDetailsBeanProcessor implements Processor{
public void process(Exchange exchange) throws Exception {
ArrayList<EmployeeDetails> rows = exchange.getIn().getBody(ArrayList.class);
for (EmployeeDetails record : rows) {
System.out.println("----- Record:: ----- "+
record.getId() + " "+
record.getName() + " " +
record.getJob() +" "+
record.getEmail() + " "+
record.getCity()+" "+
record.getCode());
}
}
}
내 이해는 GroupExchangedAggregationStr ategy가 사용되면 현재 Exchange가 List에 추가되지만 테스트를 거치면 현재 Exchange 대신 EmployeeDetails가 DefaultExchange로 추가됩니다.
ERROR 4236 --- [eTimeoutChecker] o.a.camel.processor.DefaultErrorHandler : Failed delivery for (MessageId: ID-admin-PC-49678-1508604904882-0-30 on ExchangeId: ID-admin-PC-49678-1508604904882-0-29). Exhausted after delivery
attempt: 1 caught: java.lang.ClassCastException: org.apache.camel.impl.DefaultExchange cannot be cast to com.test.EmployeeDetails
교환을 그룹화하는 데 대한 몇 가지 예 또는 지침을 제공 할 수 있습니까? 미리 감사드립니다.