在使用kafka发送消息,由于需求传输的对象很大,现在想要对其进行压缩后在传输
public static byte[] javaBeanToByte(Object obj) throws Exception{
byte[] bb = null;
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArray);
ObjectOutputStream outputStream = new ObjectOutputStream(gzipOutputStream);
try {
outputStream.writeObject(obj);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
byteArray.close();
//这个位置需要注意,一定要等gzipOutputStream流关闭,才可以使用 bb = byteArray.toByteArray()否则会在解压的时候出现问题
gzipOutputStream.close();
bb = byteArray.toByteArray();
System.out.println(bb.length);
outputStream.close();
}
return bb;
}
//这是解压的方式
public static void testJie(byte[] bytes) {
Object readObject = null;
try (ByteArrayInputStream in = new ByteArrayInputStream(bytes);
GZIPInputStream gzipInputStream = new GZIPInputStream(in);
ObjectInputStream inputStream = new ObjectInputStream(gzipInputStream)){
readObject = inputStream.readObject();
Person person = (Person) readObject;
System.out.println(person.getSex());
System.out.println(person.getName());
System.out.println(person.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}