Что касается вопроса: Apache camel returns multiple exceptions during a routeApache верблюд агрегат дает исключение
Его показали, что я не могу получить список строк с раздельным способом, так что я попробовал совокупный метод следующим образом:
public class lowestRates implements AggregationStrategy {
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
String oldStr = oldExchange.getIn().getBody(String.class);
String newStr = newExchange.getIn().getBody(String.class);
Pattern p = Pattern.compile("(\\w+)\\s(\\d+)");
Matcher m1 = p.matcher(oldStr);
Matcher m2 = p.matcher(newStr);
String finalStr = "";
if(m1.group(2).equalsIgnoreCase(m2.group(2)))
finalStr = m1.group(1) + Integer.toString(Integer.parseInt(m1.group(2)) > Integer.parseInt(m2.group(2)) ? Integer.parseInt(m2.group(2)) : Integer.parseInt(m1.group(2)));
else
finalStr = oldStr + "\n" + newStr;
oldExchange.getIn().setBody(finalStr);
return oldExchange;
}
}
и новый главный код:
from("file://files")
.split()
.tokenize("\n")
.aggregate(new lowestRates())
.body()
.completionTimeout(5000)
.to("file://files/result.txt")
но это дает я:
org.apache.camel.CamelExchangeException: Error occurred during aggregation. Exchange[][Message: Good1 450]. Caused by: [java.lang.NullPointerException - null]
Теперь вопрос в том, как написать правильный метод агрегирования, потому что я не вижу ничего сделать здесь не так :(.
'String oldStr = oldExchange.getIn(). GetBody (String.class);' oldStr будет иметь значение null для первого сообщения. –
Вы имели в виду строку или обмен? Также вы можете предложить исправить это? – lkn2993
Пожалуйста, посмотрите мой пример. Я думаю, вы можете сделать это лучше :) –