前面几章已经介绍过rabbitMq的使用,关于怎么发送和怎么接受消息有讲解到,这一节深入学习一下及时接受消息,那就是@RabbitListener消息监听的使用了!它的目的是注解指定目标方法来作为消费消息的方法,通过注解参数指定所监听的队列!这块的获取还是挺简单的,简单的做个记录,方便自己日后查看。
1.需要在springboot启动类中添加@EnableRabbit
2.在需要的方法上面加入@RabbitListener(queues = “${loader.rabbitMq.queue}”),其中指定的就是要接受的目标消息,通过实战来看看效果吧!
package com.lengmo.common;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class RabbitListenerServer {
protected Logger logger = LoggerFactory.getLogger(RabbitListenerServer.class);
@RabbitListener(queues = "${loader.rabbitMq.queue}")
/*public void getMessage(String message){
//这个参数需要说明一下,我们通过listener接收到的消息,是以“方法的参数”体现的,这是什么意思呢?就是方法参数里你放的是啥类型,接收到的消息就是啥类型,可以是String,Object等等
logger.info("========监听到的消息:"+message);
}*/
/* public void getMessage(Object message){
//这个参数需要说明一下,我们通过listener接收到的消息,是以“方法的参数”体现的,这是什么意思呢?就是方法参数里你放的是啥类型,接收到的消息就是啥类型,可以是String,Object等等
logger.info("========监听到的消息:"+message);
}*/
/* public void getMessage(Message message){
//这个参数需要说明一下,我们通过listener接收到的消息,是以“方法的参数”体现的,这是什么意思呢?就是方法参数里你放的是啥类型,接收到的消息就是啥类型,可以是String,Object等等
logger.info("========监听到的消息:"+message);
}*/
//往往我们获取的消息多以message接受,他可以转化成我们想要的任何类型,下面就简单的做几个操作了解一下
public void getMessage(Message message) throws JsonProcessingException {
logger.info("========监听到的消息:"+message);
byte[] body = message.getBody();
//ObjectMapper objectMapper = new ObjectMapper();
//Info info = objectMapper.readValue(body, Info.class); //转化为对应的类
String msg=new String(body);
logger.info("========监听到的消息body:"+msg);
logger.info("========监message.getMessageProperties==:"+message.getMessageProperties());
}
}
3.这个方法的参数需要说明一下,我们通过listener接收到的消息,是以“方法的参数”体现的,这是什么意思呢?就是方法参数里你放的是啥类型,接收到的消息就是啥类型,可以是String,Object等等
4.总结:我们在使用的过程中,需要知道我们接收到的消息体是啥类型的,然后根据具体的类型做转换,转换成我们需要的方法类型即可!
版权声明:本文为u014135369原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。