десортировка строк фиксированной длины utf-8 с помощью beanio и camel

Когда нет диакритических знаков, представленных двумя байтами, рассортировка сообщения в порядке, в противном случае он не жалуется на длину. Я попытался преобразовать тело в строку ввода и установить кодировку utf-8.

<convertBodyTo type="java.lang.String" charset="UTF-8" /> 

прежде чем разбирать с помощью BeanIO на маршруте Camel, но это не помогает. Как правильно решить проблему?

На самом деле, я думаю, что цель convertBodyTo может заключаться не в том, чтобы сообщить какому-то классу, который должен выполнять десортировку, что фактическая строка, хотя и объявленная фиксированной длины, может быть переменной длины, а в том, чтобы выполнить фактическое преобразование? Но для этого нужно, чтобы я сначала сказал где-нибудь, что фактическим источником является utf-8, возможно, из конечной точки. Затем я могу временно преобразовать его в некоторую кодировку, которая имеет представление однобайтовой кодировки перед демаршалингом, а затем обратно в utf-8?

После того, как у меня возникло предположение, что цель состоит в том, чтобы предоставить BeanIO информацию о том, какую кодировку использовать, я придумал:

<dataFormats>
 <beanio id="parseTransactions464" mapping="mapping.xml" streamName="Transactions464" encoding="UTF-8"/>
</dataFormats>

но это дает мне:

Исчерпан после попытки доставки: 1 поймано: java.lang.NullPointerException: charset

Я в основном скопировал использование кодирования с помощью beanio dataFormat отсюда, я не знаю, нормально ли это:

Не удается найти формат данных в реестре — Camel


person hdjur_jcv    schedule 20.02.2018    source источник


Ответы (1)


Это дефект верблюда-бинио, см. это:

http://camel.465427.n5.nabble.com/Re-Exhausted-after-delivery-attempt-1-caught-java-lang-NullPointerException-charset-tc5817807.html

http://camel.465427.n5.nabble.com/Exhausted-after-delivery-attempt-1-caught-java-lang-NullPointerException-charset-tc5817815.html

https://issues.apache.org/jira/browse/CAMEL-12284

person hdjur_jcv    schedule 21.02.2018