我正在考虑对spring-integration的消息序列化支持。这对于实现保证交付的各种线路级传输非常有用,而且还允许与其他消息传递系统(例如通过 AMQP)进行互操作。
出现的基本问题是,在其有效负载和标头中包含 Java 对象的消息应转换为byte[]
和/或写入流。Java 自己的序列化显然不会削减它,因为它不可互操作。我的偏好是创建一个接口,允许用户为参与序列化的所有对象实现所需的逻辑。
这意味着我不想要求客户端开发人员生成他的域代码,而是为需要它的对象定义一个序列化程序。接口将类似于:
public interface PayloadSerializer<T> {
byte[] bytesForObject(T source);
T objectFromBytes(byte[]);
//similar methods for streaming potentially
}
//add HeaderSerializer, MessageSerializer
这是一个明智的想法吗?完美的界面会是什么样子?是否有一种标准的可互操作方式来序列化在这种情况下有意义的对象?