10分钟上手:Spring Boot集成Apache NiFi构建实时数据流处理系统

10分钟上手:Spring Boot集成Apache NiFi构建实时数据流处理系统

【免费下载链接】springboot-learning-example spring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。 【免费下载链接】springboot-learning-example 项目地址: https://gitcode.com/gh_mirrors/sp/springboot-learning-example

你是否还在为数据采集、清洗、流转的繁琐流程而困扰?本文将带你通过springboot-learning-example项目,快速实现Spring Boot与Apache NiFi(数据流处理框架)的集成,解决从数据源到业务系统的全链路数据治理难题。读完本文,你将掌握:

  • 基于NiFi的可视化数据流设计方法
  • Spring Boot与NiFi的REST API交互实现
  • 实时数据处理的典型应用场景与代码示例

技术架构概览

Apache NiFi是一个基于Web的数据流处理工具,支持数据路由、转换和系统中介等功能。通过Spring Boot集成NiFi,可构建如下架构的数据流处理系统:

mermaid

项目核心模块路径:

环境准备与依赖配置

1. 安装Apache NiFi

NiFi官网下载最新版本,解压后执行启动命令:

# Linux/Mac
./bin/nifi.sh start

# Windows
bin\run-nifi.bat

访问NiFi Web控制台:https://localhost:8443/nifi(默认端口)

2. 添加Spring Boot依赖

在项目的pom.xml中添加HTTP客户端和JSON处理依赖:

<!-- 以springboot-restful模块为例 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-json</artifactId>
</dependency>

依赖配置文件路径:springboot-restful/pom.xml

核心实现步骤

步骤1:配置NiFi连接参数

在application.yml中添加NiFi服务配置:

nifi:
  base-url: https://localhost:8443/nifi-api
  username: admin
  password: 88b332a8-5953-4d5a-97c8-8f22d932e779 # 从NiFi的nifi.properties获取

配置文件路径:springboot-properties/src/test/resouorces/application.yml

步骤2:实现NiFi REST API客户端

创建NiFi服务接口类,封装数据流操作:

@Service
public class NiFiClientService {
    @Value("${nifi.base-url}")
    private String baseUrl;
    
    private final RestTemplate restTemplate;
    
    // 构造函数注入RestTemplate
    public NiFiClientService(RestTemplateBuilder restTemplateBuilder) {
        this.restTemplate = restTemplateBuilder
                .setConnectTimeout(Duration.ofSeconds(10))
                .setReadTimeout(Duration.ofSeconds(10))
                .build();
    }
    
    // 获取NiFi数据流状态
    public String getFlowStatus() {
        HttpHeaders headers = new HttpHeaders();
        headers.setBasicAuth("admin", "88b332a8-5953-4d5a-97c8-8f22d932e779");
        
        ResponseEntity<String> response = restTemplate.exchange(
            baseUrl + "/flow/status",
            HttpMethod.GET,
            new HttpEntity<>(headers),
            String.class
        );
        return response.getBody();
    }
    
    // 更多API方法:创建数据流、启动处理器等
}

参考实现路径:springboot-restful/src/main/java/org/spring/springboot/

步骤3:设计NiFi数据处理流程

  1. 在NiFi控制台拖拽组件创建数据流:

    • GetFile:监听本地文件目录
    • ConvertRecord:JSON格式转换
    • PutHTTP:发送数据到Spring Boot接口
  2. 配置PutHTTP处理器:

    • 目标URL:http://localhost:8080/api/data/ingest
    • Content-Type:application/json

业务集成与测试

数据接收接口实现

在Spring Boot应用中创建数据接收端点:

@RestController
@RequestMapping("/api/data")
public class DataIngestController {
    private final DataService dataService;
    
    @Autowired
    public DataIngestController(DataService dataService) {
        this.dataService = dataService;
    }
    
    @PostMapping("/ingest")
    public ResponseEntity<String> ingestData(@RequestBody DataDTO data) {
        dataService.process(data);
        return ResponseEntity.ok("Data processed: " + data.getId());
    }
}

控制器实现路径参考:springboot-restful/src/main/java/org/spring/springboot/

功能测试

  1. 启动Spring Boot应用:
cd springboot-restful
mvn spring-boot:run
  1. 在NiFi中上传测试文件到监听目录,观察数据流向:

    • 文件路径:/tmp/nifi-input/test.json
    • 数据格式:{"id": "1", "content": "测试数据流"}
  2. 查看应用日志确认数据接收:

2025-11-02 10:30:45 INFO  DataIngestController: Data processed: 1

典型应用场景

1. 日志数据实时处理

通过NiFi监听应用日志目录,实时解析并发送到ELK stack:

  • NiFi流程:TailFile → LogAttribute → PutUDP → Logstash
  • 参考配置:springboot-logging/(需扩展实现)

2. 数据库变更同步

使用NiFi的QueryDatabaseTable处理器捕获数据变更: mermaid

监控与运维

通过Spring Boot Actuator监控数据流处理状态:

  1. 添加Actuator依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 暴露健康检查端点:
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics

配置参考:springboot-actuator/(需扩展实现)

总结与扩展

本文基于springboot-learning-example项目,实现了Spring Boot与Apache NiFi的集成方案,关键要点:

  • 利用NiFi可视化界面简化数据流配置
  • 通过REST API实现与Spring Boot应用的双向通信
  • 结合Actuator实现全链路监控

扩展方向:

  • 集成Kafka实现高吞吐数据传输:springboot-kafka/(需扩展模块)
  • 实现数据处理的分布式部署:springboot-dubbo-server/

建议收藏本文,并关注项目README.md获取最新更新。下一篇将介绍如何使用NiFi的RecordPath语言进行复杂数据转换。

NiFi数据流监控界面 图:NiFi数据流监控控制台示例

【免费下载链接】springboot-learning-example spring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。 【免费下载链接】springboot-learning-example 项目地址: https://gitcode.com/gh_mirrors/sp/springboot-learning-example

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值