50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Spring for Apache Kafka 3.0 和 Spring for RabbitMQ 3.0 发布

  • 2022-12-26
    北京
  • 本文字数:1765 字

    阅读完需:约 6 分钟

Spring for Apache Kafka 3.0和Spring for RabbitMQ 3.0发布

VMWare发布Spring for Apache Kafka 3.0 和 Spring for RabbitMQ 3.0,需要 Java 17 和 Spring Framework 6.0。这些项目现在支持创建原生GraalVM应用程序,并使用Micrometer指标门面来观察计时器和实现跟踪。现在,两个项目都在 pom.xml 文件中提供了BOM,方便进行依赖项管理。


Micrometer 用于增强 JVM 代码,没有供应商锁定,可以观察计时器和跟踪KafkaTemplateRabbitTemplate及监听器容器。Micrometer 类似于SLF4J(一种日志门面),只是它是用在指标方面。


现在,Spring AOT原生提示可用来为使用 Spring for Apache Kafka 或 Spring for RabbitMQ 构建的 Spring 应用程序创建原生镜像,示例可在 GitHub 上的spring-aot-smoke-tests项目中找到。spring-kafka-test 模块中的EmbeddedKafkaBroker类在原生镜像中不受支持。


Spring for Apache Kafka 3.0 要求Kafka客户端是 3.3.1 版本,如果要使用事务,要求最低 Kafka broker(即 Kafka 服务器)是 2.5 版本。


现在可以跨多个测试类使用一个单独的全局 EmbeddedKafkaBroker,只需要像下面这样替换服务器地址:


public final class EmbeddedKafkaContainer {    private static EmbeddedKafkaBroker embeddedKafkaBroker =         new EmbeddedKafkaBroker(1, false)            .brokerListProperty("spring.kafka.bootstrap-servers");    private static boolean started;
public static EmbeddedKafkaBroker getEmbeddedKafkaBroker() { if (!started) { try { embeddedKafkaBroker.afterPropertiesSet(); } catch (Exception exception) { throw new KafkaException("Error starting EmbeddedKafkaBroker", exception); } started = true; } return embeddedKafkaBroker; }
private EmbeddedKafkaContainer() { super(); }}
复制代码


在配置了 EmbeddedKafkaBroker 之后,它就可以被用在每一个测试类中:


static {    EmbeddedKafkaHolder.getEmbeddedKafkaBroker()        .addTopics("students", "teacher");}
private static final EmbeddedKafkaBroker broker = EmbeddedKafkaContainer.getEmbeddedKafkaBroker();
复制代码


对于前面的示例,broker 在完成测试后将会继续运行,这可能会导致潜在的问题。例如,在使用 Gradle 守护进程时,EmbeddedKafkaBroker 的 destroy()方法应该在所有测试执行完毕之后被调用。


GlobalEmbeddedKafkaTestExecutionListener为测试计划启动一个全局的 EmbeddedKafkaBroker,并在测试计划被执行时停止它。监听器在默认情况下是禁用的,可以在 1.8 或更新版本的 JUnit Platform 上通过 spring.kafka.global.embedded.enabled 属性来启用。


用于非阻塞重试的@RetryableTopic注解不再是实验性的。在这个版本中,这个注解得到了进一步的改进,现在可以作为自定义注解的元注解。现在可以在同一个应用程序上下文的同一个主题上配置多个 @RetryableTopic 监听器。容器现在可以发布ConsumerRetryAuthEventConsumerRetryAuthSuccessfulEvent事件。


KafkaTemplateReplyingKafkaTemplate类中定义的各种 send 方法现在将返回一个CompletableFuture,而不是已弃用的ListenableFuture


Spring for RabbitMQ 现在支持单个活跃消费者的超级流。超级流是通过参数 x-super-stream: true 将几个流队列绑定到一个 exchange 来创建的。例如,我们可以使用SuperStream类型的 bean 来创建 test.exchange 和两个队列或分区:


@BeanSuperStream superStream() {  return new SuperStream("test.exchange", 2);}
复制代码


使用@RabbitListener注解的监听器方法现在可以消费CollectionList类型的消息批次


AsyncRabbitTemplateRabbitStreamTemplateRabbitStreamOperations的 send 方法现在返回CompletableFuture,而不是已弃用的ListenableFuture


Spring for RabbitMQ 不再支持远程方法调用(RMI)。


更多信息可以在KafkaRabbitMQ的 What's New 页面中找到。


原文链接

https://www.infoq.com/news/2022/12/spring-apache-kafka-rabbitmq-3/


相关阅读:

Spring Boot 3和Spring Framework 6使用Java 17和Jakarta EE 9,并支持基于GraalVM的原生Java

Spring Modulith使用模块和事件组织Spring Boot 3应用

InfoQ 2022 年趋势报告:Java 篇

2022-12-26 09:3110078

评论

发布
暂无评论
发现更多内容

水果软件2024FL Studio中文语言版本下载

茶色酒

FL Studio FL Studio 21

复习前端:JavaScript V8 引擎机制

devpoint

chrome JIT V8

万字长文搞懂产品模式和项目模式

俞凡

团队管理

CleanMyMacX4.12.2最新版本更新下载

茶色酒

CleanMyMacX

关于环境变量配置的思考总结

timerring

Go 环境变量

从任务分配角度来看管理

石云升

极客时间 1月月更 技术领导力实战笔记

Kratos微服务框架API工程化指南

golang gRPC microservice Kratos 工程化

技术如何分担产品之忧?

石云升

极客时间 1月月更 技术领导力实战笔记

架构误区系列12:一切皆依赖云平台

agnostic

云计算 部署架构

CleanMyMac X2024汉化版安装包新增

茶色酒

CleanMyMac X CleanMyMac X2023

精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)

码界西柚

Java JVM JVM原理 2023

【PHP】英文博客专栏PHP快速入门个人笔记

懒时小窝

php

Python 内置界面开发框架 Tkinter入门篇 甲

eng八戒

Python GUI tkinter

开源移动核心网Magma架构设计启示

俞凡

架构 网络 通信

技术管理者如何获得下属的认同?

石云升

极客时间 1月月更 技术领导力实战笔记

FPGA:硬件描述语言简介

timerring

FPGA

极客时间运维进阶训练营第十二周作业

9527

工作这么多年,我总结的数据传输对象 (DTO) 的最佳实践

JAVA旭阳

Java 架构

JSON.stringify() 的 5 使用场景

devpoint

JavaScript 前端开发 JSON格式化

会声会影2023和谐版本补丁包下载

茶色酒

会声会影 会声会影2023

你知道哈希算法,但你知道一致性哈希吗?

JAVA旭阳

Java 架构

【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录

码界西柚

Linux SSH SSH工具 sftp

复习前端:前端应掌握的网络知识

devpoint

OSI七层协议 http2 HTTPS协议加密

架构误区系列11:无聊的架构归一

agnostic

架构治理

Studio One2024旗舰级DAW的跨版本升级

茶色酒

Studio One 5 Studio One2023

Portraiture2024汉化版磨皮插件下载

茶色酒

Portraiture2023 Portraiture

【Redis技术专区】「优化案例」谈谈使用Redis慢查询日志以及Redis慢查询分析指南

码界西柚

redis 性能调优 慢查询

我们需要怎样的低代码平台

agnostic

低代码

【腾讯云AI】用1行Python代码识别增值税发票,YYDS

程序员晚枫

Python 人工智能 发票 OCR

2022年终总结-无所吊谓

wood

年终总结 稳定 开心 普通的一年

如何快速优雅的用Know Streaming创建Topic

石臻臻的杂货铺

获取 topic等信息 后端、

Spring for Apache Kafka 3.0和Spring for RabbitMQ 3.0发布_语言 & 开发_Johan Janssen_InfoQ精选文章