前面几章已经介绍过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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u014135369/article/details/112313643