Потоковая передача XML с NetServer в Vert.X

Я пытаюсь создать Verticle, чем запускает TcpServer, который затем асинхронно считывает XML из входящих подключений, сохраняет весь XML, который он получает, в PriorityQueue, а затем транслирует XML-сообщения из очереди.

Я использую NetServer, который считывает входящие данные из принятых подключений NetSocket, но я не знаю, как анализировать данные потока по xml. Если я использую стандартный обработчик, который преобразует Buffer в String, я получаю обрезаемые сообщения. Мне удалось заставить его в основном работать, создав RecordParser, который ограничивает конечный тег XML, но это скорее бандаж. Если бы я получил много неверных данных перед сообщением Xml, это было бы включено.

Когда я использую прямую netty, у нее есть опция для XMLFrameDecoder, которая работает, но есть ли способ добиться этого в Vert.x?

Вот что у меня есть

@Override
public void start(Future<Void> startFuture) {
    NetServerOptions options = new NetServerOptions()
            .setPort(mPort)
            .setTcpKeepAlive(true);
    mServer = vertx.createNetServer(options);
    mServer.connectHandler(new Handler<NetSocket>() {
        @Override
        public void handle(NetSocket netSocket) {
            netSocket.handler(RecordParser.newDelimited("</root>", new Handler<Buffer>() {
                @Override
                public void handle(Buffer buffer) {
                    String xml = buffer.getString(0, buffer.length()) + "</root>";
                    XMLMessage message = new XMLMessage (xml);
                    System.out.println(xml);
                }
            }));
        }
    });
    mServer.listen();
}

Дайте мне знать, если у вас есть предложения.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
213
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Vert.x нет RecordParser, который выполнял бы ту же работу, что и XMLFrameDecoder Netty.

Однако возможно интегрировать собственные серверы Netty с моделью программирования Vert.x.

Другие вопросы по теме