2015-05-30 2 views
1

При работе с текстовыми сообщениями EDI X12 Message message (например, http://examples.x12.org/) через прямой TCP, через HTTP или SOAP или другими транспортными протоколами у кого-нибудь есть примеры или слова мудрости:netty codecs vs smooks marshalling

1) использование netty для простого кодирования кадра транспортного протокола (так что кадрирование TCP STX/ETX, HTTP-кадрирование), а затем пересылка необработанной полезной нагрузки на другой инструмент, такой как Smooks для синтаксического анализа/сортировки. (если есть альтернативы, отличные от smooks, пожалуйста, поделитесь!)

2) или используя Netty и собственный созданный кодек для анализа сложного содержимого цикла (сегменты, поля, компоненты и т. д.).

Возможно, это возможно в любом сценарии, но ищет достаточную производительность (1000 сообщений в секунду), низкую задержку (10 мс или ниже), маркеры с низкой задержкой, такие как минимальный GC, и если вы создаете кодек или парсер/маршаллер переносится ли он на другие транспортные протоколы/другие (java) системы.

Часть незнания/путаницы - это кодеки против маршаллеров/парсеров для сообщений, особенно когда сообщение может переноситься непосредственно через TCP.

Спасибо за любые рекомендации!

ответ

0

Чтобы ответить на мой вопрос: отправился с решением Camel, где netty4-http является конечной точкой (для HTTP-кадрирования) и smooks (как формат данных верблюда) для разбора полезной нагрузки EDI.

Smooks, похоже, находится в диапазоне латентности 20-40 мс при немаршальном имплантате EDI-to-Java для полезной нагрузки X12 размером 1,5 килобайта. Маршалинг Я использовал непосредственного писателя из объекта java, так как использование маршала на каблуке верблюда dataformat не функционировало.

Несмотря на более высокую задержку, очень быстро настроить сопоставление файлов edi xml и использовать плагин maven-ejc для создания объекта привязки java из edi xml. Для быстрого поворота, по сравнению с долгосрочным временем исполнения, довольно хороший компромисс для моего сценария.