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
これは賢明なアイデアであり、完璧なインターフェースはどのようなものでしょうか? このコンテキストで意味のあるオブジェクトをシリアル化するための標準的な相互運用可能な方法はありますか?