繁体   English   中英

Spring AMQP:无法使用RabbitMessagingTemplate设置MessageProperties

[英]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而应使用RabbitTemplateMessagePostProcessor 会更有效率...

rabbitTemplate.convertAndSend(exchange.getName(), routingKey, event, m -> {
    m.getMessageProperties().setExpiration(...);
    ...
    return m;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM