Как запрашивать сообщения в 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();
}
}
Как правильно оформить сообщение?