在本文中,我们将介绍如何在Spring Boot应用中使用RabbitMQ实现消息的发送与接收。我们将创建两个服务,一个用于发送消息(Publisher服务),一个用于接收消息(Consumer服务)。首先,我们需要在这两个服务中配置RabbitMQ地址,接着编写发送和接收消息的代码。

要引入spring-boot-starter-amqp依赖才能开始后续操作
1. 配置RabbitMQ地址

首先,在Publisher服务的application.yml文件中添加RabbitMQ的配置:

spring:
  rabbitmq:
    host:  # 你的虚拟机IP
    port:  # 端口
    virtual-host:  # 虚拟主机
    username:  # 用户名
    password:  # 密码
2. 编写消息发送测试类

在Publisher服务中,我们需要编写一个测试类SpringAmqpTest,并利用RabbitTemplate实现消息的发送:

import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class SpringAmqpTest {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testSimpleQueue() {
        // 队列名称
        String queueName = "simple.queue";
        // 消息
        String message = "hello, spring amqp!";
        // 发送消息
        rabbitTemplate.convertAndSend(queueName, message);
    }
}

运行测试后,打开控制台,你将看到消息已经成功发送到队列中。

3. 实现消息接收

同样地,在Consumer服务的application.yml文件中添加RabbitMQ的配置:

spring:
  rabbitmq:
    host:  # 你的虚拟机IP
    port:  # 端口
    virtual-host:  # 虚拟主机
    username:  # 用户名
    password:  # 密码

接下来,在Consumer服务的com.itheima.consumer.listener包中新建一个类SpringRabbitListener,用于监听队列并处理消息:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class SpringRabbitListener {
    // 利用RabbitListener来声明要监听的队列信息
    // 一旦监听的队列中有了消息,就会推送给当前服务,调用当前方法,处理消息。
    // 可以看到方法体中接收的就是消息体的内容
    @RabbitListener(queues = "simple.queue")
    public void listenSimpleQueueMessage(String msg) {
        System.out.println("spring 消费者接收到消息:【" + msg + "】");
    }
}

运行后,当队列simple.queue中有消息时,SpringRabbitListener中的listenSimpleQueueMessage方法将被调用,并输出接收到的消息内容。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部