netty 编解码器与 smooks 编组

Posted

技术标签:

【中文标题】netty 编解码器与 smooks 编组【英文标题】:netty codecs vs smooks marshalling 【发布时间】:2015-05-30 00:54:16 【问题描述】:

在通过直接 TCP、HTTP、SOAP 或其他传输协议使用基于文本的 EDI X12 消息有效负载(例如 http://examples.x12.org/)时,有没有人有任何例子或智慧之言:

1) 使用 netty 进行简单的传输协议帧编码(即 TCP STX/ETX 帧、HTTP 帧),然后将原始有效负载转发到另一个工具,例如 Smooks 进行解析/编组。 (如果有烟熏以外的替代品,请分享!)

2) 或使用 Netty 和自定义创建的编解码器来解析复杂的循环内容(段、字段、组件等)。

这似乎在任何一种情况下都是可能的,但如果您要寻找足够的性能(1000 条消息/秒)、低延迟(10 毫秒或更低)、低延迟标记(例如最小 GC),并且如果您创建编解码器或解析器/编组器,则它可移植到其他传输协议/其他 (java) 系统。

部分无知/混淆是消息的编解码器与编组器/解析器,特别是当消息可以直接通过 TCP 传输时。

感谢您的指导!

【问题讨论】:

【参考方案1】:

回答我自己的问题:使用 Camel 解决方案,其中 netty4-http 是端点(用于 HTTP 框架),smooks(作为骆驼数据格式)用于 EDI 有效负载解析。

对于约 1.5kb 大小的 X12 有效负载,Smooks 似乎在 EDI 到 Java 解组 impl 的 20-40 毫秒延迟范围内。编组我使用来自 java 对象的直接编写器,因为在 smooks 骆驼数据格式上使用编组不起作用。

虽然延迟较高,但可以非常快速地设置 edi xml 文件映射并使用 maven-ejc 插件从 edi xml 创建 java 绑定对象。为了快速周转,与长期运行时性能相比,我的方案相当不错。

【讨论】:

以上是关于netty 编解码器与 smooks 编组的主要内容,如果未能解决你的问题,请参考以下文章

netty篇-编解码器框架和netty预置的

什么是Netty编解码,Netty编解码器有哪些?Protostuff怎么使用?

Netty4自带编解码器详解

netty编解码之jboss marshalling

Day475.GoogleProtobuf&Netty编解码器和handler 的调用机制 -netty

Day475.GoogleProtobuf&Netty编解码器和handler 的调用机制 -netty