![](/img/trans.png)
[英]Spring AMQP MessageProperties:all headers were removed during deadlettering
[英]Spring AMQP: Unable to set MessageProperties using RabbitMessagingTemplate
我已经尝试过设置消息的过期时间,并使用RabbitMessagingTemplate进行转换和发送:
Map<String,Object> headers = new HashMap<>();
headers.put("expiration", "20000");
rabbitMessagingTemplate.convertAndSend(exchange.getName(),routingKey, event, headers);
但它不起作用,因为到期应设置为属性,而不应设置为标头。 不幸的是, RabbitMessagingTemplate
无法提供传递消息属性的方法,而只能提供标头。 另一方面,由于我使用JecksonMessageConverter,因此需要转换消息。 在使用RabbitMessagingTemplate发送消息之前,如何添加消息属性?
将MessagePostProcessor添加到基础RabbitRemplate的beforePublishPostProcessors中。
我现在看不到代码,但是很奇怪它没有被映射。
编辑
使用标题名称amqp_expiration
。 参见AmqpHeaders.EXPIRATION
。 它映射到message属性。
无法识别的标头映射到标头。
编辑2
无论如何,根据您的要求,最好不要使用RabbitMessagingTemplate
而应使用RabbitTemplate
和MessagePostProcessor
。 会更有效率...
rabbitTemplate.convertAndSend(exchange.getName(), routingKey, event, m -> {
m.getMessageProperties().setExpiration(...);
...
return m;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.