Skip to content

RabbitMQ Message not nacked in case of queue limit #41629

Open

Description

Describe the bug

I am trying to work with quarkus-smallrye-reactive-messaging-rabbitmq in an environment where RabbitMQ is configured with a limited number of messages (overflow of type "reject-publish" + dead-letter-strategy=at-least-once).
I am not able to get a negative acknowledgement in my Quarkus publisher application (with "publish-confirm" configured) in case the message is rejected by the RabbitMQ cluster when the queue is full: in Quarkus, I only ever get a timeout, but never a "nack":

I have created a reproducer here https://github.com/soframel/quarkus-rabbitmq-tests/tree/rabbitOverflowNotNacked using an OutgoingInterceptor to check for the ack or nack.
Before that, I had also tried with a MutinyEmitter to produce a Uni, as well as with a CompletionStage on Emitter.send, with the same results.

Note: I am not sure if it is a Quarkus or Smallrye or event Vertx problem (which explains why I cross-posted on smallrye reactive messaging's discussions + stackoverflow already some time ago, but then I couldn't find the time to reproduce it until now, sorry). I thought it may have been a problem with RabbitMQ's quorum queues, but I have now tested the same cluster configuration with spring-boot using their "Confirm" object, and I directly receive a nack in case of overflow in the queue.

Expected behavior

getting third message "nacked" (unit test in reproducer should work)

Actual behavior

message is neither acked nor nacked, test fails with a timeout

How to Reproduce?

use branch "rabbitOverflowNotNacked" on project below:
https://github.com/soframel/quarkus-rabbitmq-tests/tree/rabbitOverflowNotNacked

either run the unit test, or run the docker compose +the Quarkus app and try to send 3 messages using http://localhost:8080/rabbit?s=test

Output of uname -a or ver

Microsoft Windows [Version 10.0.19045.4529]

Output of java -version

openjdk 21.0.3 2024-04-16 LTS OpenJDK Runtime Environment Temurin-21.0.3+9 (build 21.0.3+9-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.3+9 (build 21.0.3+9-LTS, mixed mode, sharing)

Quarkus version or git rev

3.12.0

Build tool (ie. output of mvnw --version or gradlew --version)

Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae) Maven home: C:\IDE\apache-maven-3.9.6 Java version: 21.0.3, vendor: Eclipse Adoptium, runtime: C:\Program Files\Temurin Default locale: en_US, platform encoding: UTF-8 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

Additional information

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions