添加消息请求头
使用RabbitMQ进行异步通信时,可能不仅仅需要传递消息本身,有时需要包含一些额外的信息,比如登录状态。可以参考前端发送请求时的做法,把登录状态保存在请求头中。Message类中也有请求头,可以使用一下方式添加到请求头:
message.getMessageProperties().getHeaders().put("user-info", 1L);
实际使用中,没有必要每次都创建一个Message类,然后手动添加。通过MessagePostProcessor可以简单实现请求头添加,而最常用的convertAndSend方法就可以直接传入MessagePostProcessor作为参数:
String exchangeName = "test.direct";
String key = "test";
rabbitTemplate.convertAndSend(exchangeName, key, "msg", new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setHeader("user-info", 1L);
// 这里也可以做一些其他的统一逻辑处理
return message;
}
});
也可以这样