- 博客(59)
- 收藏
- 关注
原创 Spring for Apache Pulsar->Reactive Support->Message Consumption
摘要:本文详细介绍了Spring for Apache Pulsar框架中@ReactivePulsarListener的使用方法。该注解通过ReactivePulsarConsumerFactory创建和管理Pulsar消费者,支持单消息和流式消费模式。文章阐述了模式推断机制(自动处理原始类型,默认JSON处理复杂类型)、消费者定制、消息确认(Mono/Void表示处理结果)以及死信队列等高级功能。同时说明了如何配置并发处理(stream=true时自然支持)和访问Pulsar消息头信息。框架还提供了消息
2025-07-11 00:13:51
758
原创 Spring for Apache Pulsar->Reactive Support->Message Production
摘要:Spring Boot为Pulsar生产者提供了ReactivePulsarTemplate,支持单条/多条消息发送(返回Mono/Flux)。通过Fluent API可进行消息定制(如键控消息)和发送器配置(如禁用批处理)。对于非原始类型,框架自动构建JSON模式,也支持AVRO等模式类型映射配置(可通过属性文件、注解或定制器实现)。AUTO_SCHEMA模式允许验证字节数据与主题模式兼容性。底层使用ReactivePulsarSenderFactory创建生产者,并支持LRU缓存优化性能。
2025-07-10 23:39:24
941
原创 Spring for Apache Pulsar->Reactive Support->Quick Tour
本文演示了如何使用Spring Boot对Apache Pulsar的响应式支持快速构建应用。只需添加spring-boot-starter-pulsar-reactive依赖,无需额外配置即可在默认Pulsar集群上运行。示例应用包含两个核心组件:ReactivePulsarTemplate用于发送消息到指定主题,以及@ReactivePulsarListener注解的消费方法。这种简洁的实现得益于Spring Boot自动配置,开发者仅需少量代码就能完成消息的发布和订阅功能。
2025-07-10 23:26:22
350
原创 Using Spring for Apache Pulsar:Transactions
Spring for Apache Pulsar提供完整的事务支持,包括生产者与消费者的消息处理。关键特性包括:1) 通过@Transactional注解和PulsarTransactionManager实现事务管理;2) PulsarTemplate支持事务性发送,可配置超时和事务需求;3) @PulsarListener支持在事务范围内处理消息,实现消费-处理-生产模式;4) 支持与其他事务管理器(如JDBC)协同工作。事务功能默认禁用,可通过配置启用,适用于记录和批量监听器场景,为消息处理提供原子性保
2025-07-10 23:13:21
1084
原创 Using Spring for Apache Pulsar:Message Consumption
此时,容器会确认消息,并将侦听器与原始批中的后续消息一起移交。换句话说,当使用PulsarRecordMessageListener使用单个记录并使用BATCH的默认ack模式时,框架会等待从batchReceive调用接收到的所有记录成功处理,然后调用Pulsar消费者上的确认方法。请记住,对于最终用户应用程序,在大多数情况下,我们建议在使用Spring for Apache Pulsar时直接使用PulsarListener注释从Pulsar主题中消费,因为该模型涵盖了广泛的应用程序用例。
2025-07-10 00:42:24
885
原创 Using Spring for Apache Pulsar:Publishing and Consuming Partitioned Topics
本文展示了如何使用Pulsar处理分区主题。生产者通过自定义路由(FooRouter、BarRouter、BuzzRouter)将消息定向到特定分区,使用sendAsync方法和CustomPartition路由模式。消费者端演示了三种订阅方式:独占订阅将所有分区消息汇集到一个消费者;故障转移订阅为每个分区分配专用消费者;共享订阅允许多个消费者并行处理消息但失去顺序保证。代码示例说明了如何通过@PulsarListener注解配置不同订阅类型,满足不同场景下的消息消费需求。
2025-07-09 23:52:34
374
原创 Using Spring for Apache Pulsar:Message Production
摘要:SpringBoot为Pulsar生产者提供了PulsarTemplate工具,支持同步(send)和异步(sendAsync)两种发送方式。该模板提供简单API和流畅API两种调用方式,并支持通过TypedMessageBuilder和ProducerBuilder进行消息和生产者定制。系统可自动处理Java原生类型Schema,对于复杂类型支持JSON/AVRO等Schema配置,可通过属性配置、定制器或注解实现。PulsarProducerFactory负责生产者创建和缓存管理,需注意Lambd
2025-07-09 23:27:20
693
原创 Using Spring for Apache Pulsar:Quick Tour
摘要:本文演示了如何在SpringBoot应用中快速集成Apache Pulsar。通过添加spring-boot-starter-pulsar依赖,无需额外配置即可在localhost:6650运行的Pulsar集群上使用。示例代码展示了PulsarTemplate自动发送消息和@PulsarListener接收消息的功能,SpringBoot自动处理了客户端配置和模式推断。该方案采用独占订阅模式,实现了简单的"Hello Pulsar"消息收发功能,体现了Spring对Pulsar的
2025-07-08 23:53:12
467
原创 Spring AI:ETL Pipeline
摘要: ETL框架是检索增强生成(RAG)系统中的核心数据处理组件,负责将原始数据转换为适合AI模型检索的结构化向量存储。该框架包含三个关键接口:DocumentReader(读取多种格式文档)、DocumentTransformer(内容转换和元数据增强)和DocumentWriter(存储处理结果)。系统支持PDF、HTML、Markdown等多种文档格式,并提供文本分割、关键词提取、摘要生成等转换功能。通过模块化设计,开发者可以灵活组合不同组件构建ETL管道,为RAG应用提供高质量的数据预处理能力,从
2025-07-08 22:06:06
1047
原创 Spring AI:检索增强生成(RAG)
SpringAI介绍了检索增强生成(RAG)技术的实现方法,包括现成的QuestionAnswerAdvisor和RetrievalAugmentationAdvisor解决方案,以及模块化自定义流程。系统支持查询转换(如重写、压缩、翻译)、多查询扩展、向量存储检索(带元数据过滤)和文档后处理等功能。通过ContextualQueryAugmenter将检索内容整合到提示中,可显著提升语言模型回答的准确性。开发者可灵活配置相似度阈值、top-K结果数量等参数,并支持静态/动态过滤器表达式。该框架采用模块化设
2025-07-08 21:28:05
1106
原创 Spring AI:Tool Calling
SpringAI工具调用功能详解 摘要:SpringAI提供了强大的工具调用功能,允许AI模型与外部API或系统交互。工具分为两类:信息检索工具(获取实时数据)和操作执行工具(执行特定任务)。工具调用通过ToolCallback接口实现,支持声明式(@Tool注解)和编程式两种定义方式。SpringAI自动处理工具请求解析、执行和结果返回,并支持JSON模式生成、异常处理、上下文传递等高级功能。开发者可以灵活控制工具执行流程,选择由框架管理或自行控制。该功能还包含可观测性和日志记录支持,为构建智能应用提供了
2025-07-08 00:47:36
682
原创 6,Receiving Messages:@KafkaListener Annotation
摘要:本文详细介绍了Spring Kafka中@KafkaListener注解的使用方法,主要包括:1. 基础配置方式,通过POJO监听器处理消息;2. 显式分区分配机制,支持指定主题/分区和初始偏移量;3. 手动确认模式实现;4. 批量监听器配置,支持处理消费者记录列表;5. 注解属性配置技巧,包括SpEL表达式和消费者属性设置。文中还提供了容器工厂配置示例,展示了并发设置、轮询超时等关键参数,并说明了不同版本新增的功能特性。该注解为Kafka消息监听提供了灵活的配置选项,支持多种消息处理场景。
2025-07-07 22:43:18
1120
原创 5、Receiving Messages:Message Listener Containers
文章摘要: Kafka消息监听容器提供了两种实现方式:KafkaMessageListenerContainer(单线程)和ConcurrentMessageListenerContainer(多线程)。从2.2.7版本起支持添加RecordInterceptor拦截器,2.7版本增加了BatchInterceptor和Consumer访问功能。容器支持多种偏移量提交模式(RECORD、BATCH等)和事务管理,2.3版本后默认关闭自动提交。文章详细介绍了容器的配置选项,包括主题分配策略、错误处理机制(na
2025-07-07 22:23:56
885
原创 4、Sending Messages
摘要:本文介绍了如何使用KafkaTemplate发送消息。KafkaTemplate封装了生产者,提供了多种发送消息的方法,包括sendDefault()和send()等。文章还介绍了ReplyingKafkaTemplate实现请求/回复模式的方法,以及AggregatingReplyingKafkaTemplate处理多接收者回复的场景。此外,还讲解了ProducerFactory的配置、序列化器设置、消息头处理等细节内容,并提供了代码示例说明如何创建和配置KafkaTemplate实例。
2025-07-07 00:27:06
581
原创 3、Configuring Topics
摘要:本文介绍了如何使用KafkaAdmin和TopicBuilder在Spring应用中自动创建Kafka主题。通过定义KafkaAdmin bean和NewTopic @Bean,可以配置主题名称、分区数、副本数等参数。从2.6版本起可省略分区/副本设置,2.7版本支持批量声明主题。文章还说明了初始化处理、分区扩容机制,以及如何通过AdminClient进行高级操作。最新版本增加了Predicate筛选功能,可选择性地创建/修改特定主题。Spring Boot会自动注册KafkaAdmin,简化了配置流
2025-07-06 23:32:36
177
原创 2、Connecting to Kafka
KafkaAdmin-请参阅配置主题ProducerFactory-请参阅发送消息ConsumerFactory-请参阅接收消息从2.5版本开始,每个版本都扩展了KafkaResourceFactory。这允许在运行时通过向引导服务器的配置中添加Supplier<String>来更改引导服务器:setBootstrapServersSupplier(()->…)。所有新连接都将调用此命令以获取服务器列表。消费者和生产者通常寿命较长。
2025-07-06 22:55:38
658
原创 Spring for kafka系列——1、快速浏览
本文介绍了使用Spring for Apache Kafka的两种方式:1)通过Spring Boot快速集成,只需添加spring-kafka依赖并配置少量注解即可实现生产消费功能;2)非Spring Boot环境下需要手动配置多个基础设施Bean(如ProducerFactory、ConsumerFactory、KafkaTemplate等)。文章提供了两种方式的完整代码示例,并说明Spring Boot方式更简便,推荐通过start.spring.io创建项目时直接选择Kafka依赖。要求运行环境包括
2025-07-06 22:41:32
375
原创 Docker Model Runner Chat
Docker Model Runner是一个AI推理引擎,提供来自不同提供商的各种模型。Spring AI通过重用现有的OpenAI支持的ChatClient与Docker Model Runner集成。为此,将基本URL设置为localhost:12434/engines,并选择提供的LLM模型之一。查看DockerModelRunnerWithOpenAiChatModelIT.java测试,了解如何将Docker Model Runner与Spring AI结合使用。
2025-07-06 18:37:04
674
原创 DeepSeek Chat
Spring AI支持DeepSeek的各种AI语言模型。您可以与DeepSeek语言模型交互,并基于DeepSeek模型创建多语言会话助手。
2025-07-06 17:55:24
964
原创 Chat Model API
聊天模型API为开发人员提供了将人工智能聊天完成功能集成到应用程序中的能力。它利用预训练的语言模型,如GPT(生成预训练转换器),以自然语言对用户输入生成类似人类的响应。API通常通过向人工智能模型发送提示或部分对话来工作,然后人工智能模型根据其训练数据和对自然语言模式的理解生成对话的完成或继续。然后将完成的响应返回给应用程序,应用程序可以将其呈现给用户或用于进一步处理。
2025-07-05 23:37:51
830
原创 Story2:自动化免密登录CSDN和百度+Spring AI文档,并进行页签切换
本文介绍了使用Java+Selenium实现自动化免密登录CSDN和百度,并与SpringAI文档页面进行多页签切换的技术方案。文章详细讲解了整体架构设计,包括通过扫码获取cookie实现免密登录、多页签管理以及在同一个浏览器窗口中切换三个不同网站页签的实现方法。技术实现上,采用数据库存储cookie信息、重构公共方法模块、优化页面跳转逻辑等关键点。同时指出了当前代码结构存在的问题,如重复controller逻辑、条件判断过多等,并提出了后续将引入策略模式和反射机制进一步优化的方向。该方案为自动化文档翻译和
2025-06-17 22:39:00
1106
原创 5、Spring AI(MCPServer+MCPClient+Ollama)开发环境搭建_第一篇
该开发环境是在3、后端持久化(SpringBoot3.5.0+MybatisPlus3.5.5+mysql8.4.0)环境搭建上进行改造的,用到了后端持久化,主要改造的地方为数据库把email字段改为height(身高),该开发环境主要是设计了一个灌篮高手篮球经理对球队成员简单的查询,通过这个场景把MCPServer、MCPClient、大模型、用户客户端相互的职责和关系简单捋一下,其他的改造和实现一边贴代码一边解释。
2025-06-13 20:29:05
1268
原创 4、大模型本地运行环境搭建
下载地址这个下载速度是龟速,可以百度一下,有快速下载的方法,也有网盘分享的小伙伴,速度很快;下载好以后打开cmd或者PowerShell运行两行命令如果关机下次忘了大模型叫什么名字的话,可以如下操作非常好,回答的呆萌呆萌的,其他你能把英文文档翻译出新高度;事实再次证明1、便宜没好货2、不会开车的大模型不是好模型最后,浏览器输入看是否成功,成功标志:Ollama is running。
2025-06-12 18:52:00
224
原创 3、后端持久化(SpringBoot3.5.0+MybatisPlus3.5.5+mysql8.4.0)环境搭建
搭建环境时,最好使用当下最新且稳定的版本,注意各个依赖之间的版本需保持一致,否则会引起很多不必要的麻烦,而且如果用Spring AI的话,对SpringBoot的版本和JDK版本都有最低要求;
2025-06-12 15:12:50
1278
原创 2、web自动化环境搭建
本文介绍了简化Java+Selenium自动化测试环境搭建的方法。通过WebDriverManager依赖(6.1.0版本)自动管理chromedriver,无需手动下载匹配版本或关闭浏览器自动更新。提供完整pom.xml配置,包含Selenium(4.31.0)、WebDriverManager、SLF4J日志(2.0.9)和Log4j2(2.24.3)的集成方案,并展示了控制层(WebAutoTestDemoControl)和服务层(WebAutoTestDemoService)的实现代码。服务类通过W
2025-06-11 22:42:40
263
原创 1、本地工程关联gitee远程仓
原因是可能.gitignore文件要忽略的内容不是自己想要的,最直接快捷的方式就是先把.git文件删掉,后期通过远程仓添加.git,而不需要原始的.git;这么做是因为,本地新建工程时的.git和远程仓的.git不属于一个.git,如果两者关联需要做很多额外的工作,不如直接干掉本地新建工程时的.git。工程创建成功之后,如果idea已经装了git插件,会发现文件已经进行了add操作,这时候,直接找到工程对应的文件目录把.git文件干掉(2、如果不需要的文件已经提交过远程仓,需要远程仓操作进行删除。
2025-06-11 16:02:17
370
原创 Chat Memory
Spring AI通过方言抽象支持多个关系数据库。开箱即用支持以下数据库:PostgreSQLSQL Server嵌入式数据库使用JdbcChatMemoryRepositoryAlect.from(DataSource)时,可以从JDBC URL自动检测到正确的方言。您可以通过实现JdbcChatMemoryRepositoryDialect接口来扩展对其他数据库的支持。
2025-06-11 00:16:07
1050
原创 Models->Chat Models->OpenAI Chat
Spring AI支持来自OpenAI的各种AI语言模型,OpenAI是ChatGPT背后的公司,由于其创建了行业领先的文本生成模型和嵌入,它在激发人们对AI驱动的文本生成的兴趣方面发挥了重要作用。
2025-06-10 22:14:46
1008
原创 Models->Chat Models->DeepSeek Chat
SpringAI集成DeepSeek语言模型开发指南摘要:本文介绍了如何使用SpringAI框架集成DeepSeek语言模型。主要内容包括:注册DeepSeek账号获取API密钥配置Spring Boot项目,添加spring-ai-starter-model-deepseek依赖详细说明了ChatProperties、ConnectionProperties等配置参数提供示例代码展示如何开发聊天控制器和代码生成功能介绍了DeepSeek推理模型的使用方法说明如何手动配置DeepSeekC
2025-06-10 21:30:14
553
原创 CSDN自动写博客系列(总)
摘要:本文介绍了一个基于Java和SpringAI的自动化博客生成系统设计方案。系统通过Selenium串联CSDN、百度翻译和英文网站,实现中英文内容自动转换和顺序管理;使用SpringBoot3+MybatisPlus3进行数据持久化;整合Ollama本地大模型对翻译内容进行AI润色;采用策略模式对接不同网站和大模型;通过Vue3/Angular前端界面传递参数;运用模板化和组件化思想提高开发效率。系统设计强调模块化但避免过度设计,适合单机环境运行,旨在快速生成高质量技术博客内容。
2025-06-08 23:34:18
412
原创 MCP Utilities
MCP实用程序提供了SpringAI与MCP服务器集成的工具,支持同步和异步操作。主要功能包括:1) ToolCallbackAdapter实现MCP工具与SpringAI的适配;2) ToolCallbackProvider从MCP客户端发现工具;3) McpToolUtils提供工具规范转换和客户端回调获取功能。还支持GraalVM原生镜像构建,通过McpHints自动注册反射提示。这些组件简化了MCP与SpringAI的整合,为开发者提供了灵活的编程接口。
2025-06-08 18:35:35
365
原创 MCP Server Boot Starter
SpringAIMCP服务器引导启动器为SpringBoot应用提供了MCP服务器的自动化配置方案,支持三种传输机制:标准输入输出(STDIO)、基于SpringMVC的SSE和响应式WebFlux传输。该启动器可实现工具调用、资源管理、提示模板和补全功能四大核心能力,并支持同步/异步两种服务器模式。通过自动配置系统,开发者只需简单依赖选择和属性配置,即可快速构建功能完备的MCP服务器。启动器还提供变更通知、上下文传递等高级特性,并支持通过SpringBean自动注册各类功能组件。
2025-06-08 18:18:37
801
原创 MCP Client Boot Starter
Spring AI MCP(模型上下文协议)客户端引导启动器为Spring Boot应用程序中的MCP客户端功能提供自动配置。它支持具有各种传输选项的同步和异步客户端实现。MCP客户端引导启动器提供:管理多个客户端实例自动客户端初始化(如果启用)支持多个命名传输与Spring AI的工具执行框架集成适当的生命周期管理,在应用程序上下文关闭时自动清理资源通过定制器创建可定制的客户端。
2025-06-08 12:40:40
1063
原创 Multimodality API
人类在多种数据输入模式下同时处理知识。我们的学习方式和经历都是多模式的。我们不仅有视觉,还有音频和文本。与这些原则相反,机器学习通常侧重于为处理单一模态而定制的专门模型。例如,我们开发了用于文本到语音或语音到文本等任务的音频模型,以及用于对象检测和分类等任务的计算机视觉模型。然而,新一波多模态大型语言模型开始出现。
2025-06-08 01:40:29
189
原创 Structured Output Converter
LLM生成结构化输出的能力对于依赖于可靠解析输出值的下游应用程序非常重要。开发人员希望将AI模型的结果快速转换为数据类型,如JSON、XML或Java类,这些数据类型可以传递给其他应用程序函数和方法。Spring AI结构化输出转换器有助于将LLM输出转换为结构化格式。如下图所示,此方法围绕LLM文本完成端点运行:使用通用完成API从大型语言模型(LLM)生成结构化输出需要仔细处理输入和输出。结构化输出转换器在LLM调用前后起着至关重要的作用,确保实现所需的输出结构。
2025-06-08 01:30:24
620
原创 Prompts
提示是引导AI模型生成特定输出的输入。这些提示的设计和措辞会显著影响模型的反应。在Spring AI中与AI模型交互的最低级别,处理Spring AI中的提示与管理Spring MVC中的“视图”有些相似。这涉及为动态内容创建带有占位符的广泛文本。然后根据用户请求或应用程序中的其他代码替换这些占位符。另一个类比是包含某些表达式占位符的SQL语句。随着Spring AI的发展,它将为与AI模型的交互引入更高层次的抽象。本节中描述的基础类在角色和功能方面可以比作JDBC。
2025-06-08 01:05:44
678
原创 Advisors API
Spring AI Advisors API提供了一种灵活而强大的方式来拦截、修改和增强Spring应用程序中的AI驱动交互。通过利用Advisors API,开发人员可以创建更复杂、可重用和可维护的人工智能组件。其主要好处包括封装重复的生成式人工智能模式,转换发送到大型语言模型(LLM)的数据,以及提供跨各种模型和用例的可移植性。建议在构建时使用构建器的defaultAdvisors()方法注册顾问。顾问也参与了Observability堆栈,因此您可以查看与其执行相关的指标和跟踪。
2025-06-08 00:39:45
578
原创 Chat Client API
fluent API具有用于构建作为输入传递给AI模型的Prompt的组成部分的方法。Prompt包含指导AI模型输出和行为的教学文本。从API的角度来看,提示由一组消息组成。人工智能模型处理两种主要类型的消息:用户消息和系统消息,用户消息是用户的直接输入,系统消息由系统生成以引导对话。这些消息通常包含占位符,这些占位符在运行时根据用户输入进行替换,以定制AI模型对用户输入的响应。还有可以指定的提示选项,例如要使用的AI模型的名称以及控制生成输出的随机性或创造性的温度设置。
2025-06-08 00:04:54
687
原创 Spring AI初学:人工智能概念
models人工智能模型是设计用于处理和生成信息的算法,通常模仿人类的认知功能。通过从大型数据集中学习模式和见解,这些模型可以做出预测、文本、图像或其他输出,从而增强跨行业的各种应用。有许多不同类型的AI模型,每种模型都适合特定的用例。虽然ChatGPT及其生成AI功能通过文本输入和输出吸引了用户,但许多模型和公司提供了多样化的输入和输出。在ChatGPT之前,许多人对文本到图像生成模型着迷,如Midjourney和Stable Diffusion。
2025-06-07 23:20:15
679
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人