Весенняя интеграция Разархивирующий трансформатор генерирует исключение ReplyRequiredException - PullRequest
0 голосов
/ 27 октября 2018

Мы хотели бы распаковать байтовый массив с помощью Spring Integration и испытываем следующее исключение при использовании unzip-transformer:

org.springframework.integration.handler.ReplyRequiredException: Нет обработчика ответа org.springframework.integration.handler.MessageHandlerChain # 1 $ child # 1 '. Его свойство requireReply установлено в значение true. FailedMessage = GenericMessage [payload = byte [327] ...

Это блоб .xml , который мы пытаемся использовать для этой работы:

int-zip:unzip-transformer result-type="BYTE_ARRAY" expect-single-result="true"/>

Эквивалентный код Java с использованием service-activator прекрасно работает дляраспаковка:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
GZIPInputStream gzipInputStream;
gzipInputStream = new GZIPInputStream(new ByteArrayInputStream((byte[]) 
message.getPayload()));
IOUtils.copy(gzipInputStream, byteArrayOutputStream);
byteArrayOutputStream.close();
return new String(byteArrayOutputStream.toByteArray(), Charsets.UTF_8);

Есть ли способ сделать тот же код с помощью unzip-transformer?

1 Ответ

0 голосов
/ 27 октября 2018

GZIPInputStream ... Spring Integration ZIP не поддерживает GZIP, только обычный ZIP с записями.Вот как вы получаете это исключение:

 if (uncompressedData.isEmpty()) {
                if (logger.isWarnEnabled()) {
                    logger.warn("No data unzipped from payload with message Id " + message.getHeaders().getId());
                }
                unzippedData = null;
            }

Просто потому, что ZipUtil.iterate(InputStream is, ZipEntryCallback action) не имеет итерации по полезной нагрузке GZIP.

...