2016-10-04 73 views
2

我想在發送郵件給兔子時設置郵件頭。 我正在使用下面的代碼,但混淆瞭如何在其中設置消息標題。在發送郵件時在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對象及其發送的類型。我想知道我應該在哪裏設置消息標題。

回答

4

的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; 
    } 

}); 
+0

不要把註釋代碼;正如你所看到的那樣,它是不可讀的。改爲編輯您的問題,並顯示您的所有配置。優先級是消息屬性,而不是消息頭。使用'm.getMessageProperties()。setPriority(priority)'。 –