实现MessagePostProcessor,重写postProcessMessage方法,为Message设置参数。
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessagePostProcessor;
/**
* Created with IntelliJ IDEA.
*
* @author 张鸿杰
* Date:2019-05-04
* Time:22:56
*/
public class MyMessagePostProcessor implements MessagePostProcessor {
private final Long ttl; // 毫秒
public MyMessagePostProcessor(Long ttl) {
this.ttl = ttl;
}
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties()
.setExpiration(ttl.toString()); // 设置per-message的失效时间
return message;
}
}
发送消息采用重载方法convertAndSend(Message,MessagePostProcessor )即可。
amqpTemplate.convertAndSend(message, new MyMessagePostProcessor(ttl));
扩展:可以看到实现方式主要是修改了Message的配置信息—MessageProperties,可以在MessageProperties看到可以修改Message的很多信息。大家可以根据需要进行设置即可。