У меня есть некоторый код в приложении, над которым я работаю в Apache Camel, который должен обрабатывать свойство, обновляемое внутри разбиения.Чтобы избежать отправки электронной почты для всех и вся обновляется.
Однако в Aggregate это вызывает исключение нулевого указателя, поскольку oldExchange имеет значение null, а newExchange показывает обмен после вызова по электронной почте.
Я пытался прочитать руководство Camel, но не помогает, что половина примеров веб-сайтов не загружается.
Что я делаю неправильно.
<route>
...
<when>
<simple>${property.updateAddress} == 'Y' </simple>
<split strategyRef="checkForEmail">
<!-- Update Address Processes here -->
<when>
<simple>${property.alreadySentEmail == 'N'}</simple>
<process ref="handleEmail"> <!-- sets alreadySentEmail property to 'N' -->
</when>
</split>
...
</when>
<when>
<simple>${property.updatePhone} == 'Y'</simple>
<split strategyRef="checkForEmail">
<!-- Update Phone Processes here -->
<when>
<simple>${property.alreadySentEmail == 'N'}</simple>
<process ref="handleEmail"><!-- sets alreadySentEmail property to N-->
</when>
</split>
...
</when>
</route>
//added bean to Bean.xml that maps "checkForEmail" to this
public class CheckForEmail implements AggregationStrategy {
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if (newExchange != null && newExchange.getProperty("alreadySentEmail") != null){
oldExchange.setProperty("alreadySentEmail", newExchange.getProperty("alreadySentEmail"));
}
return oldExchange;
}
}