java - Netty 编解码器与 smooks 编码

标签 java netty smooks

当通过直接 TCP、HTTP、SOAP 或其他传输协议(protocol)使用基于文本的 EDI X12 消息有效负载(例如 http://examples.x12.org/ )时,是否有人有关于以下任一方面的示例或智慧之言:

1) 使用 netty 进行简单的传输协议(protocol)帧编码(例如 TCP STX/ETX 帧、HTTP 帧),然后将原始有效负载转发到另一个工具(例如 Smooks)进行解析/编码。 (如果除了 smooks 之外还有其他选择,请分享!)

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

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

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

感谢您的指导!

最佳答案

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

对于大约 1.5kb 大小的 X12 负载,Smooks 在 EDI-to-Java unmarshal impl 上的延迟范围似乎为 20-40ms。编码 我使用了 java 对象的直接编写器,因为在 smooks Camel 数据格式上使用编码不起作用。

虽然延迟较高,但可以非常快速地设置 edi xml 文件映射并使用 maven-ejc 插件从 edi xml 创建 java 绑定(bind)对象。对于快速周转,与长期运行时性能相比,对于我的场景来说这是一个很好的权衡。

关于java - Netty 编解码器与 smooks 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30541116/

相关文章:

java - 如何使用指定的 Schema 将 Java 类序列化为 XML

Freemarker 从列表中获取元素

java - 具有不可变参数的自引用枚举

netty - 哪个效率更高 : Netty's HashedWheelTimer or Quartz's scheduler?

java - Netty SMTP代码-服务器端

netty - netty 中非阻塞 channel 中的 SO_TIMEOUT

java - Android TableLayout 内容不显示

java - BufferedWriter newLine 方法未找到

java - 已解析页面的 HTML

edi - 吸烟问题