Quarkus 2.8.0引入了细粒度的Transaction API

2024-01-22 12:20

本文主要是介绍Quarkus 2.8.0引入了细粒度的Transaction API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

升级概览

Quarkus 2.8.0.Final发布,特性包括:将RESTEasy Reactive作为默认 REST 层;将 GraalVM 22.0 作为默认版本;新的QuarkusTransaction API;以及 Elasticsearch Dev Services(可以自动启动devtest模式的 Elasticsearch 容器)。此外,由于存在二进制兼容性不可靠问题,AssertJ被从 Quarkus BOM 中删除。开发人员需要在他们的应用程序中明确指定 AssertJ 3.22.0

改动

默认集成了RESTEasy Reactive REST层和GraalVM 22.0。细粒度的编程事务API提供了对事务的更多控制。

引入了RESTEasy Reactive 集成,这是JAX-RS的反应式实现,由Vert.x实现。在这个版本中,RESTEasy Reactive 现在是默认的实现,支持阻塞和反应式调用,根据端点的返回类型自动选择。

REST服务器的所有依赖quarkus-resteasy都应该被quarkus-resteasy-Reactive 替代,除了quarkus-resteasy-mutiny,因为它的功能集成在RESTEasy Reactive中。

注释替换,比如org.jboss.resteasy.annotations.jaxrs。QueryParam,应该被org.jboss.resteasy替换。响应式注释,如org.jboss.resteasy.reactive.RestQuery。

REST客户端实现应该用quarkus-rest-client-reactive**依赖项取代quarkus-rest-client*依赖项。RESTEasy Reactive迁移指南和参考指南提供了进一步的迁移指南。

QuarkusTransaction API

QuarkusTransaction API现在提供了一个编程API,通过显式调用begin()和commit()方法来控制事务:

QuarkusTransaction.begin();
// implementation 
QuarkusTransaction.commit();

该事务被绑定到CDI请求范围,并在异常破坏请求范围时自动回滚。或者,也可以在超时发生时启动事务并回滚:

QuarkusTransaction.begin(QuarkusTransaction.beginOptions() 
.timeout(42));
// implementation
QuarkusTransaction.rollback();

Lambda作用域事务通过在事务中执行Runnable提供了另一种选择:

QuarkusTransaction.run(() -> {
// implementation 
});

另外,也可以使用支持异常处理和枚举语义 DISALLOW_EXISTINGJOIN_EXISTINGSUSPEND_EXISTINGREQUIRE_NEW(默认)的Callable解决方案:

int answer = QuarkusTransaction.call(QuarkusTransaction.runOptions() 
.timeout(21) .exceptionHandler((throwable) -> {
if (throwable instanceof RuntimeException) { return RunOptions.ExceptionResult.COMMIT;
} return RunOptions.ExceptionResult.ROLLBACK; 
}) .semantic(RunOptions.Semantic.REQUIRE_NEW), () -> {
// implementation 
return 42;
});

将GraalVM 22.0作为默认版本,在构建本地映像时提供了改进的日志记录。

Quarkus现在支持OpenID连接(OIDC)的密钥交换证明(PKCE),这是OAuth 2.0协议上的一个身份层。PKCE是OAuth 2.0的扩展,以减轻公共客户端请求访问令牌时的安全威胁。

维护者决定从物料清单(BOM)中删除AssertJ,因为新版本经常会破坏二进制兼容性。项目现在应该显式声明AssertJ 3.22.0,目前是最新版本。

当使用Elasticsearch扩展名时,在Dev和test模式下运行测试时,Elasticsearch服务会自动启动一个Elasticsearch容器,除非显式禁用,例如,quarkus.devservices.enabled设置为false。

更多内容请查看该链接:www.infoq.com/news/2022/0…

更新日志请查看:www.linuxeden.com/a/103649

转载于:Quarkus 2.8.0引入了细粒度的Transaction API - 掘金 (juejin.cn)

这篇关于Quarkus 2.8.0引入了细粒度的Transaction API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/632964

相关文章

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep