Search code examples
spring-bootrabbitmqmessage-queuespring-rabbit

Subscribe specific message in RMQ message queue


I have a RM queue test-queue. In there I need to handle 3 separate messages (message-1, message-2, message-3) for 3 separate processes in 3 separate services.

I use @RabbitListener like below to access the message

@RabbitListener(queues = "test-queue")
        public void getMessage1(Message message) {
     System.out.println(message);
    }

but I need to access specific message ex:message-1 only in this function.

Any heads up?


Solution

  • That’s wrong design for AMQP protocol . You need to think about 3 different queues for those messages and correct bindings for them from a single exchange with the proper routing. Then you can easy have 3 consumers from those queues.

    My point is that queue entity is a consumer responsibility. The producer just dump a message into an exchange. So, you just dictate from your consumer application how you’d like to get produced messages.

    Out of subject you can investigate a Spring Integration router pattern implementation if you really can’t change your RabbitMQ structure : https://docs.spring.io/spring-integration/docs/current/reference/html/message-routing.html#messaging-routing-chapter