quarkus Multi не цитирует строки

#java #quarkus #mutiny

Вопрос:

Предыстория: Я только начинаю работать с Кваркусом и прохожу https://quarkus.io/guides/resteasy-reactive

У меня определена следующая конечная точка:

     @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/greeting/{name}/{count}/{delayInSeconds}")
    public Multi<String> greetings(String name, long count, short delayInSeconds) {
        return service.greetings(name, delayInSeconds, count);
    }
 

Детали, лежащие service в основе, не особенно важны, я не думаю; это создает поток "hello {name} - {idx}" .

То, что я вижу в возвращенном http-ответе, — это строки без кавычек (недопустимый json):

 curl http://localhost:8080/hello/greeting/neo/4/1

[hello neo - 0,hello neo - 1,hello neo - 2,hello neo - 3]
 

Я попытался заменить pom.xml зависимость quarkus-resteasy-reactive на quarkus-resteasy-reactive-jackson , но с тем же эффектом (я полагаю, потому String что уже зарегистрирован здесь: https://quarkus.io/guides/resteasy-reactive#resource-types ).

Есть ли безопасный способ сделать это? Или идея состоит в том, чтобы просто преобразовать Multi в a List , чтобы Джексон мог правильно сериализовать его?

Я отмечу пример, приведенный на https://quarkus.io/guides/getting-started-reactive (официальные документы) показывает процитированный ответ:

 $ curl http://localhost:8080/hello/greeting/3/neo
["hello neo - 0", "hello neo - 1", "hello neo - 2"]
 

Обновить

Это эффективно выполняет то, что я хочу, хотя я хочу подтвердить, что это не блокирует поток ввода-вывода:

     @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/greeting/{name}/{count}/{delayInSeconds}")
    // NOTE: conversion to `Uni<List` from `Multi`
    public Uni<List<String>> greetings(String name, long count, short delayInSeconds) {
        return service.greetings(name, delayInSeconds, count).collect().asList();
    }
 

Обновить

Как отмечалось в комментариях, это открытая ошибка: https://github.com/quarkusio/quarkus/issues/18043 Закрывается.

Комментарии:

1. Для этого существует открытая проблема: github.com/quarkusio/quarkus/issues/18043 что, скорее всего, будет исправлено в ближайшее время

2. Боже, должно быть, я это пропустил. Спасибо @geoand .

3. Нет проблем, мы надеемся исправить это в ближайшее время для 2.0.x выпуска

Ответ №1:

Как отмечалось в комментариях, это открытая ошибка: https://github.com/quarkusio/quarkus/issues/18043 Закрывается.