我可以在我的类中推送扩展Spring Integrations ByteArrayLengthHeaderSerializer的消息吗?

时间:2015-07-02 20:04:43

标签: tcp spring-integration

我正在扩展ByteArrayLengthHeaderSerializer以从tcp消息头返回长度。问题是套接字上的第一条消息包含一个没有标头的8字节会话。在第一条消息之后,所有消息都将有一个带有长度的标题(以及其他一些字段)。标头的前4个字节始终是常量值。

我想读取前4个字节,以确定我是否有带标题或原始sessionId的消息。

如果不是标题,那么我会推回4个字节并返回8的长度。

如果是标题(前4个字节与常量值匹配),那么我将读取标题的其余部分,在标题中找到长度字段并返回该值。

此外,此应用程序可能正在使用nio。

1 个答案:

答案 0 :(得分:0)

不直接;几年前我通过编写使用PushBackInputStream的自定义反序列化器来做类似的事情。

您应该能够编写自定义反序列化器;将IS包装在PushBackIS中。在开始时查看并在需要时回退,然后委派给BALHS以使用正确的标头解码这些消息。