Как получить агрегат в Сплите для передачи свойства через Apache Camel? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть некоторый код в приложении, над которым я работаю в 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;

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...