Как запрашивать сообщения в SmallRye Reactive Messaging / Reactive Messaging для MicroProfile?

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

Я не нашел специального API в Reactive Messaging для 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();
        }

    }

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

0 ответов

Другие вопросы по тегам