当使用基于文本的EDI X12消息有效负载(例如http://examples.x12.org/)通过直接TCP,HTTP或SOAP或其他传输协议时,任何人都有任何智慧的例子或文字:
1)使用netty进行简单的传输协议帧编码(因此TCP STX / ETX成帧,HTTP成帧),然后将原始有效负载转发到另一个工具,如Smooks进行解析/编组。 (如果有其他选择,请分享!)
2)或使用Netty和自定义创建的编解码器来解析复杂的循环内容(段,字段,组件等)。
在任何一种情况下,似乎都有可能,但寻找足够的性能(1000消息/秒),低延迟(10毫秒或更低),低延迟标记,如最小GC,如果您创建编解码器或解析器/ marshaller是它可以移植到其他传输协议/其他(java)系统。
部分无知/混淆是消息的编解码器与编组器/解析器,特别是当消息可以直接通过TCP传输时。
感谢任何指导!
答案 0 :(得分:0)
回答我自己的问题:使用Camel解决方案,其中netty4-http是一个端点(用于HTTP成帧),并且smooks(作为camel数据格式)用于EDI有效负载解析。
对于约1.5kb大小的X12有效载荷,Smook似乎在EDI-to-Java unmarshal impl的20-40ms延迟范围内。 Marshaling我使用了java对象的直接编写器,因为在smook上使用marshal camel dataformat不起作用。
虽然延迟更高,但很快设置edi xml文件映射并使用maven-ejc插件从edi xml创建java绑定对象。为了快速周转,与长期运行时性能相比,我的方案有很好的权衡。