温馨提示×

Linux下Swagger与RabbitMQ如何协同工作

小樊
38
2025-10-20 05:16:57
栏目: 智能运维

在Linux环境下,Swagger和RabbitMQ可以协同工作,以提供一个完整的API文档和消息队列服务。以下是它们如何协同工作的步骤:

1. 安装和配置RabbitMQ

首先,你需要在Linux系统上安装RabbitMQ。你可以使用包管理器来安装,例如在Ubuntu上:

sudo apt update
sudo apt install rabbitmq-server

启动RabbitMQ服务并设置开机自启动:

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

2. 安装和配置Swagger

Swagger是一个用于设计、构建、记录和使用RESTful Web服务的框架。你可以使用Swagger UI来展示你的API文档。

安装Swagger UI

你可以使用Docker来快速安装Swagger UI:

docker pull swaggerapi/swagger-ui
docker run -p 8080:8080 swaggerapi/swagger-ui

访问 http://localhost:8080 即可看到Swagger UI界面。

配置Swagger

在你的Spring Boot应用中,添加Swagger依赖:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

配置Swagger:

import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo"))
                .paths(PathSelectors.any())
                .build();
    }
}

3. 集成RabbitMQ与Swagger

在你的Spring Boot应用中,集成RabbitMQ并使用Swagger来记录API文档。

添加RabbitMQ依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

配置RabbitMQ

application.propertiesapplication.yml 中配置RabbitMQ:

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

创建RabbitMQ生产者和消费者

创建一个生产者类来发送消息到RabbitMQ:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class RabbitMQProducer {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendMessage(String message) {
        rabbitTemplate.convertAndSend("exchangeName", "routingKey", message);
    }
}

创建一个消费者类来接收消息:

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

@Component
public class RabbitMQConsumer {
    @RabbitListener(queues = "queueName")
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

在Swagger中记录API

使用Swagger注解来记录你的API:

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
@Api(tags = "RabbitMQ Controller")
public class RabbitMQController {
    @Autowired
    private RabbitMQProducer rabbitMQProducer;

    @ApiOperation("Send a message to RabbitMQ")
    @PostMapping("/send")
    public String sendMessage(@RequestParam String message) {
        rabbitMQProducer.sendMessage(message);
        return "Message sent";
    }
}

4. 运行和测试

启动你的Spring Boot应用:

./mvnw spring-boot:run

访问 http://localhost:8080/swagger-ui.html 查看Swagger UI界面,并测试你的API。

通过以上步骤,你可以在Linux环境下实现Swagger和RabbitMQ的协同工作,提供一个完整的API文档和消息队列服务。

0