You need to enable JavaScript to run this app.
导航
Spring Boot SDK
最近更新时间:2024.08.27 19:47:43首次发布时间:2024.08.27 19:47:43

本文介绍在 AMQP 协议下,使用 Spring Boot 连接 RabbitMQ 实例进行消息的生产和消费,并提供对应的示例代码。

准备工作

  • 在 RabbitMQ 实例详情页中获取 AMQP 接入点。如需为实例开启公网访问,请参见设置公网访问
  • 直接使用管理员用户进行生产和消费,可能会有信息泄露风险。您在进行生产和消费前,需要先在 RabbitMQ 集群管理 Web UI 上创建一个非 Admin 角色的新用户,并为新用户绑定 Virtual Host。操作步骤,请参见绑定用户和 Vhost
  • 提前在 RabbitMQ 集群管理 Web UI 上创建 Queue 和 Exchange。

添加依赖

pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    <version>2.3.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.1.RELEASE</version>
</dependency>

准备配置文件

resources路径下,创建配置文件application.yml。请正确填写 RabbitMQ 实例相关配置后,将以下内容填写到配置文件中。

spring:
  rabbitmq:
    host: rbtmq-516***.rabbitmq.volces.com
    port: 5671
    virtual-host: /
    username: doc-user
    password: user-password
    # 如果实例开启公网访问,需要配置如下信息。
    ssl:
      enabled: true
      algorithm: TLSv1.2
      verify-hostname: false
      validate-server-certificate: false

生产消息

package org.example;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProducerController {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @RequestMapping("/send")
    public String sendMq(String msg) {
        rabbitTemplate.convertAndSend("doc-exchange", "doc-routekey", msg);
        return "send ok";
    }

}

消费消息

package org.example;

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

@Component
public class ConsumeService {

    @RabbitListener(queues = "doc-queue")
    public void receive(String message) {
        System.out.println("consume msg:" + message);
    }
}

结果验证

启动 Spring Boot 应用后,您可以在浏览器中访问http://localhost:8080/send?msg=xxx,然后发送目标消息。
发送成功后将返回send ok