Skip to content

Reactive Messaging (RabbitMQ) - Consumers execution is sequential #28425

@samodadela

Description

@samodadela

Describe the bug

SRRM with RabbitMQ connector:

  • a topic exchange bound to 3 queues
  • all queues use the same routing key ("all")
  • 3 consumer methods annotated with Incoming and Blocking

When sending to the exchange using the "all" routing key, I'd expect the consumers to be run concurrently. What happens is that they get called sequentially.

Reproducer attached.

conc.zip

Expected behavior

Expecting Incoming methods to be called concurrently.

Actual behavior

Methods are called sequentially even though they listen on separate channels.
Even tried to use separate worker pool with max-concurrency, does not help.

How to Reproduce?

Run reproducer.

GET http://localhost:8080/x/generate

Check output.

Output of uname -a or ver

Linux a 5.15.65-1-MANJARO #1 SMP PREEMPT Mon Sep 5 10:15:47 UTC 2022 x86_64 GNU/Linux

Output of java -version

/opt/jdk-11.0.14.1+1/bin/java -version
openjdk version "11.0.14.1" 2022-02-08
OpenJDK Runtime Environment Temurin-11.0.14.1+1 (build 11.0.14.1+1)
OpenJDK 64-Bit Server VM Temurin-11.0.14.1+1 (build 11.0.14.1+1, mixed mode)

GraalVM version (if different from Java)

No response

Quarkus version or git rev

2.13.0.Final

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

Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /opt/apache-maven-3.8.6
Java version: 11.0.14.1, vendor: Eclipse Adoptium, runtime: /opt/jdk-11.0.14.1+1
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.65-1-manjaro", arch: "amd64", family: "unix"

Additional information

Can't figure out how to invoke methods concurrently.

Metadata

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