Как запросить сообщения в SmallRye Reactive Messaging / Reactive Messaging для MicroProfile? - PullRequest
0 голосов
/ 31 января 2020

У меня есть метод, который потребляет сообщения и проверяет некоторые внутренние условия. Если проверка не удалась, я хочу отклонить сообщение и поместить его обратно в очередь, чтобы оно поступило к потребителю позже.

Я не нашел никакого специального API в Reactive Messaging for MicroProfile или SmallRye Reactive Messaging для отправки отрицательного подтверждения и повторного запроса сообщения. Все, что я могу сделать, это использовать Acknowledgment.Strategy.MANUAL, а не звонить message.ack(). Таким образом, сообщение остается в очереди, но не ставится в очередь - потребительский метод больше не получает это сообщение. Мой код:

    @Incoming("my-queue")
    @Acknowledgment(Acknowledgment.Strategy.MANUAL)
    public CompletionStage<Void> getMessage(Message<String> message) {

        if (!someCondition()) { 
            // validation fails. reject and requeue the message
            return CompletableFuture.completedFuture(null);
        } else {
            process(message.getPayload());
            return message.ack();
        }

    }

Как правильно оформить сообщение?

...