public CompletionStage solve()

in technology/java-activemq-quarkus/solver/src/main/java/org/acme/schooltimetabling/messaging/TimeTableMessagingHandler.java [47:70]


    public CompletionStage<Void> solve(Message<String> solverRequestMessage) {
        return CompletableFuture.runAsync(() -> {
            SolverRequest solverRequest;
            try {
                solverRequest = objectMapper.readValue(solverRequestMessage.getPayload(), SolverRequest.class);
            } catch (Throwable throwable) {
                LOGGER.warn("Unable to deserialize solver request from JSON.", throwable);
                /* Usually a bad request, which should be immediately rejected. No error response can be sent back
                   as the problemId is unknown. Such a NACKed message is redirected to the DLQ (Dead letter queue).
                   Catching the Throwable to make sure no unchecked exceptions are missed. */
                solverRequestMessage.nack(throwable);
                return;
            }

            TimeTable solution;
            try {
                solution = solver.solve(solverRequest.getTimeTable());
                replySuccess(solverRequestMessage, solverRequest.getProblemId(), solution);
            } catch (Throwable throwable) {
                LOGGER.warn("Error during processing a solver request ({}).", solverRequest.getProblemId(), throwable);
                replyFailure(solverRequestMessage, solverRequest.getProblemId(), throwable);
            }
        });
    }