消息Message本质上是一段数据,由Properties和Payload(Body)组成,Java代码中,可以利用AMQP.BasicProperties对象构造消息Properties,例如
Map<String,Object> headers = new HashMap<>();
headers.put("myFirstHead","111");
AMQP.BasicProperties properties = new AMQP.BasicProperties().builder()
.deliveryMode(2) //2代表可持久化 填1为加载到内存即可
.contentEncoding("UTF-8") //编码设置
.expiration("15000") //设置ttl时间
.headers(headers) //自定义头信息,headers是上面的map实例
.build(); //最后加上build()
//还有很多属性,不再一一介绍,可以到官网查看。
那么该如何在消费端获取你的Properties以及自定义的Headers呢?
// 创建消费者
QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
// 消费,同样没有自定义消费者,这种做法不太优雅
channel.basicConsume(queueName,true,queueingConsumer);
// 获取delivery对象,从delivery对象中拿到properties以及body
QueueingConsumer.Delivery delivery = queueingConsumer.nextDelivery();
Map<String,Object> map = delivery.getProperties().getHeaders();
// 这个map便是你定义Properties中自定义的headers
// 通过get等方法可以对其进行进一步操作