Search code examples
spring-bootrabbitmqamqpspring-amqp

How can I get messageId after sending to RabbitMq?


I want some messageId kind of thing when I am sending to Rabbit Mq Queue as I will get when sending to IBM MQ using jms. I am using spring MQ amqp starter dependency with Spring Boot. Configuration is done only in application.yml (property file). I am using Rabbit template for sending.

rabbitMqTemplate.convertAndSend(EMPTY_STRING,queueName, message, messagePostProcessor);

I have tried messagePostProcessor. Any help is appreciated. I had a look into below content. But didnt understand how to implement. Does it require special configuration (connectionfactory/ container)?

https://www.rabbitmq.com/confirms.html


Solution

  • Unlike JMS, the rabbit client doesn't assign message ids.

    However, you can configure the RabbitTemplate's MessageConverter to create an id, which you can then retrieve with a post processor.

    See AbstractMessageConverter...

    /**
     * Flag to indicate that new messages should have unique identifiers added to their properties before sending.
     * Default false.
     * @param createMessageIds the flag value to set
     */
    public void setCreateMessageIds(boolean createMessageIds) {
        this.createMessageIds = createMessageIds;
    }
    

    For message confirmations, see the reference manual. But that is unrelated to the message id property.