web-dev-qa-db-ja.com

送信中にrabbitmqにメッセージヘッダーを設定する

うさぎにメッセージを送りながらメッセージヘッダーを設定したい。以下のコードを使用していますが、メッセージヘッダーの設定方法がわかりません。

public static <T> void sendMessage(String routingKey,final Object message,Class<T> type){
    DefaultClassMapper typeMapper = new DefaultClassMapper();
    typeMapper.setDefaultType(type);

    Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();
    converter.setClassMapper(typeMapper);

    RabbitTemplate template = new RabbitTemplate(getConnectionFactory));
    template.setMessageConverter(converter);

    template.convertAndSend(routingKey, message);
}

上記のメソッドでは、単にJava POJOオブジェクトと送信するタイプについて議論しています。ここでメッセージヘッダーをどこに設定すればよいか知りたいです。

リスナー側でメッセージプロパティをリッスンする方法は?

9
Rajat Goyal

Java 8:

template.convertAndSend(routingKey, message, m -> {
    m.getMessageProperties().getHeaders().put("foo", "bar");
    m.getMessageProperties().setPriority(priority);        
    return m;
});

Java 6,7:

template.convertAndSend(routingKey, message, new MessagePostProcessor() {

    @Override
    public Message postProcessMessage(Message m) throws AmqpException {
        m.getMessageProperties().getHeaders().put("foo", "bar");
        m.getMessageProperties().setPriority(priority);        
        return m;
    }

});
19
Gary Russell