Spring Integration Unzip转换器抛出ReplyRequiredException异常

时间:2018-10-26 22:59:06

标签: java spring-integration compression gzipinputstream

我们想使用Spring Integration解压缩字节数组,并在使用unzip-transformer时遇到以下异常:

  

org.springframework.integration.handler.ReplyRequiredException:处理程序'org.springframework.integration.handler.MessageHandlerChain#1 $ child#1'未产生任何答复,并且其'requiresReply'属性设置为true。 = GenericMessage [有效载荷=字节[327] ...

这是我们正在尝试使用的 .xml Blob:

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

使用service-activator的等效Java代码可以很好地进行解压缩:

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 :(得分:0)

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有效载荷上进行迭代的事情。