Java Spring AMQP:无法使用RabbitMessagingTemplate设置MessageProperties
我尝试过设置消息的过期时间,并使用RabbitMessagingTemplate转换和发送消息:Java Spring AMQP:无法使用RabbitMessagingTemplate设置MessageProperties,java,spring,rabbitmq,spring-amqp,Java,Spring,Rabbitmq,Spring Amqp,我尝试过设置消息的过期时间,并使用RabbitMessagingTemplate转换和发送消息: Map<String,Object> headers = new HashMap<>(); headers.put("expiration", "20000"); rabbitMessagingTemplate.convertAndSend(exchange.getName(),routingKey, event, headers); Map headers=newhash
Map<String,Object> headers = new HashMap<>();
headers.put("expiration", "20000");
rabbitMessagingTemplate.convertAndSend(exchange.getName(),routingKey, event, headers);
Map headers=newhashmap();
标题。看跌期权(“到期日”、“20000”);
rabbitMessagingTemplate.convertAndSend(exchange.getName(),routingKey,event,Header);
但它不起作用,因为过期应设置为属性,而不是标题。不幸的是,RabbitMessagingTemplate
不提供传递消息属性的方法,而只提供消息头。另一方面,我需要转换消息,因为我使用JecksonMessageConverter。
如何在使用RabbitMessagingTemplate发送消息之前添加消息属性?向基础RabbitRemplate的BeforePublishPostProcessor添加消息后处理器 我现在无法查看代码,但我很惊讶它没有映射 编辑 使用标题名称
amqp\u expiration
。请参见AmqpHeaders.EXPIRATION
。它被映射到消息属性
无法识别的标头映射到标头
EDIT2
在任何情况下,根据您的需求,最好不要使用RabbitMessagingTemplate
,而是使用RabbitTemplate
和MessagePostProcessor
;这样会更有效率
rabbitTemplate.convertAndSend(exchange.getName(), routingKey, event, m -> {
m.getMessageProperties().setExpiration(...);
...
return m;
};
将MessagePostProcessor添加到基础RabbitRemplate的BeforePublishPostProcessor 我现在无法查看代码,但我很惊讶它没有映射 编辑 使用标题名称
amqp\u expiration
。请参见AmqpHeaders.EXPIRATION
。它被映射到消息属性
无法识别的标头映射到标头
EDIT2
在任何情况下,根据您的需求,最好不要使用RabbitMessagingTemplate
,而是使用RabbitTemplate
和MessagePostProcessor
;这样会更有效率
rabbitTemplate.convertAndSend(exchange.getName(), routingKey, event, m -> {
m.getMessageProperties().setExpiration(...);
...
return m;
};