I have some properties that I would like to read from previously set message headers. I did this:
 Delivery delivery = consumer.nextDelivery();
 Map<String, Object> headers = delivery.getProperties().getHeaders();
Problem is, headers have weird types - like LongString for example. Is there any helper class that would allow me to easily convert headers to anything more useful?
You must put Headers in your Message:
MessageProperties props = MessagePropertiesBuilder.newInstance().setContentType(MessageProperties.CONTENT_TYPE_JSON).build();
props.setHeader("headerKey1", "headerValue1");
Message msg = new Message("{'body':'value1','body2':value2}".getBytes(), props);        
rabbitTemplate.send("exchange.direct.one", new String(), msg);
For read the headers of Message inbound from Rabbit Queue:
import org.springframework.amqp.core.Message;
    import org.springframework.amqp.core.MessageListener;
    public class MessagesHandler implements MessageListener {
        public void onMessage(Message message) {
            Map<String, Object> headers = message.getMessageProperties().getHeaders();
            for (Map.Entry<String, Object> header : headers.entrySet())
            {
                System.out.println(header.getKey() + " : " + header.getValue());
            }
        }
    }
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With