发送时在rabbitmq中设置邮件头

Raj*_*yal 7 amqp rabbitmq jackson spring-rabbit spring-amqp

我想在向兔子发送消息时设置消息标题.我使用下面的代码,但混淆了如何设置邮件头.

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);
}
Run Code Online (Sandbox Code Playgroud)

在上面的方法中,我只是争论java POJO对象及其要发送的类型.我想知道我应该在哪里设置邮件标题.

Gar*_*ell 19

Java 8:

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

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

});
Run Code Online (Sandbox Code Playgroud)

  • 没有必要先调用`getHeaders()`。可以简化为 `m.getMessageProperties().setHeader("foo", "bar");` (3认同)