0

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

org.springframework.integration.handler.ReplyRequiredException: 处理程序 'org.springframework.integration.handler.MessageHandlerChain#1$child#1' 没有产生回复,并且它的 'requiresReply' 属性设置为 true.,failedMessage=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 执行相同的代码?

4

1 回答 1

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 有效负载。

于 2018-10-27T17:20:46.190 回答