Я «попытался» написать контроллер, используя Spring Webflux с Mono, чтобы вернуть созданную рабочую книгу сгенерированного файла excel. Все работает нормально - поэтому журнал logi c был протестирован на единицу.
Однако, что НЕ работает, так это logi c контроллера. Похоже, что вызов конечной точки API находится в ожидании l oop навсегда.
Вот пример curl
для этой конечной точки:
$ curl http://localhost:6666/api/categories/export/excel -H 'Content-type: application/octet-stream' -o output.xlsx
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:29:14 --:--:-- 0
Как вы видно, что прошло около 29 минут, и ничего не произошло. Здесь вы можете увидеть лог c контроллера. Возможно, я неправильно использовал концепцию реактивности здесь, поэтому, пожалуйста, попытайтесь объяснить мне, что я делаю не так с этой конечной точкой logi c:
@RestController
@RequestMapping(value = ["api/categories"])
class CategoryExportController(val categoryRepository: CategoryRepository,
val exportCategoryExcelBuilder: ExportCategoryExcelBuilder) {
@GetMapping(value = ["export/excel"],
produces = [MediaType.APPLICATION_OCTET_STREAM_VALUE])
fun exportExcel(response: ServerHttpResponse,
@RequestParam(required = false) parentCategoryCode: String?): Mono<Void> {
val categoryExportStream = buildExportStream(parentCategoryCode, response)
return response.writeAndFlushWith { categoryExportStream }
}
// other logic
}