Ошибка Mule - Collectiion Splitter - Исключение, выданное при возврате HTTP - PullRequest
0 голосов
/ 07 декабря 2018

получаю интересное исключение.Использование процессора сплиттера для разделения коллекции с использованием коллекции Splitter.Он разделяет коллекцию нормально, но когда поток возвращается обратно в основной поток и поток заканчивается, он выдает это исключение.Хотите знать, видели ли вы это раньше:

ОШИБКА 2018-12-07 16: 06: 26,052 [[ahld_kpi_enabler] .HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy: Поймал исключение в стратегии исключения: java.lang.UnsupportedOperationException: getPayloadAsBytes (), была попытка прямого доступа к полезной нагрузке коллекции сообщений, которая не поддерживается.Получите значение из messageList или используйте getPayload (DataType.BYTE_ARRAY_DATA_TYPE) java.lang.RuntimeException: java.lang.UnsupportedOperationException: getPayloadAsBytes (). Была предпринята попытка прямого доступа к полезной нагрузке коллекции сообщений, которая не поддерживается.Получите значение из messageList или используйте getPayload (DataType.BYTE_ARRAY_DATA_TYPE)

Поток запускается через HTTP и выполняет исходящие HTTP-вызовы.

Агрегация разделения коллекции не происходит, ее простоиспользуется для разделения коллекции и для каждого объекта в коллекции выполняются последующие вызовы / действия

1 Ответ

0 голосов
/ 08 декабря 2018

В конце вашего потока, когда используется разделитель коллекций, ваша полезная нагрузка будет коллекцией сообщений Mule, и, как вы используете HTTP, она попытается сериализовать это как ответ HTTP, что не может.

Таким образом, вы можете либо агрегировать свою полезную нагрузку, а затем установить свою полезную нагрузку на что-либо, чтобы возвращать, или даже #[null].

Или вы можете поместить свой разделитель коллекции и логику после этого в отдельномпоток - завернутый в обогащение:

<enricher target="#[flowVars.someVar]">
   <flow-ref name="myCollectionSplitterLogicFlow" />
</enricher>

Или вы можете просто использовать foreach, что я бы лично посоветовал, так как разделители удалены в Mule 4.

Если у вас есть вложенные коллекции, вы можете иметь любое количество вложенных foreach:

<foreach collection="#[payload]">
   <foreach collection="#[payload.nestedCollection]">

   </foreach>
</foreach> 
...