大菜菜学习RabbitMQ——第三篇

这一节讲的是啥呢,总的来说这个其实是监听,是在消费者模块里面写的东西

 在这里你会发现我们并没有在test里面写代码,而是在这个主类里面写代码了,这个mqlistener就是一个监听器

那我们来看看这个功能要怎么写代码

首先是最重要:写配置文件!!!

我真的服了我写代码的时候忘记配置了,然后一直都运行出现问题,后面我直接复制报错给chatgpt,它显示的问题是这个指定的队列不存在,所以我就知道了是配置文件的问题,我们的虚拟地址是错误的,我们要自己配置以后才可以找到对应的队列,配置和上一篇文章是一样的,直接复制粘贴即可

package com.itheima.consumer.listeners;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * 功能:
 * 作者:LiCooer
 * 日期:2024/4/8 16:38
 */

@Slf4j
@Component
public class MqListener {


    @RabbitListener(queues = "simple.queue")
    public void listenSimpleQueue(String msg) {
        System.out.println("消费者收到了simple.queue的消息:【" + msg + "】");
    }
}

这里有一个非常好玩的问题就是这个msg,其实很简单可以看出我们这里其实并没有具体的写这个msg到底是什么对吧,但是他确实是读取到了相应的内容

在Spring AMQP中,`@RabbitListener` 注解用于声明一个方法作为消息监听器,当监听到指定队列有消息到达时,Spring 会自动调用该方法,并将消息内容作为参数传递给方法。

在你的代码中,虽然你没有明确定义 `msg` 参数的值,但是 `@RabbitListener` 注解会自动将消息内容作为方法参数传递给监听方法。这是 Spring AMQP 的一项方便功能,它会根据消息的类型自动进行转换,并将消息内容传递给方法。

所以,即使你没有明确地在方法参数中写出消息内容的变量名,Spring 仍然能够将消息内容传递给方法,并且在方法中可以直接使用。

至此第三篇文章就这么结束了

posted @ 2024-04-08 19:31  AK梦  阅读(43)  评论(0)    收藏  举报