#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 Закрывается.