写点什么

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:319274

评论

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

《原则》(二十九)

Changing Lin

千古无同局?围棋在线教育还有这样的打开方式!

亚马逊云科技 (Amazon Web Services)

国足晋级12强!看人工智能如何更好地预测世界级赛事!

亚马逊云科技 (Amazon Web Services)

【源码篇】Handler那些事(万字图文)

小呆呆666

Java android 源码 Android Studio Android进阶

百度AICA迎来毕业季,55位新晋“首席AI架构师”推进产业智能化

百度大脑

人工智能 百度 架构师

新常态下的CMDB系统规划与落地

云智慧AIOps社区

CMDB 智能运维

JavaScript中的Set数据操作:交集、差集、交集、对称差集

devpoint

set JavaScrip 6月日更

为什么要学习JVM,仅为面试?又该如何学习?

Java架构师迁哥

科技前沿:一张图数字孪生北京大兴国际机

一只数据鲸鱼

数据可视化 智慧城市 指挥交通 智慧航空

北鲲云超算平台如何加速生命科学研究

北鲲云

如何优雅的设计DWS层?

云祁

大数据 数据仓库 维度建模

秋招冲刺:网络安全工程师入围成功之旅!!

网络安全学海

面试 运维 网络安全 信息安全 渗透

高性能计算与人工智能何处去?英特尔剑指XPU

E科讯

DNS劫持该如何处理

网络安全学海

程序员 运维 网络安全 信息安全 DNS

Dubbo 3.0.0 来了!还学得动吗?

青年IT男

dubbo

为什么很多时候,我们会感觉企业越大,效率越低呢?

石云升

职场经验 管理经验 6月日更

Flutter 改善套娃地狱问题(仿喜马拉雅PC页面举例)

小呆呆666

flutter android 大前端 iOS Developer

【源码篇】ThreadLocal的奇思妙想(万字图文)

小呆呆666

Java 源码 架构 源码分析 设计

快手封停多个内容侵权账号:如何严打短视频内容侵权行为

石头IT视角

【视频】51CTO专访博睿数据COO吴静涛,解读IT运维“新范式”

博睿数据

eKuiper 与百度智能边缘框架 BIE 集成方案

EMQ映云科技

边缘计算 边缘技术 边缘流式数据 #百度# 智能IoT边缘服务

一种更优雅的Flutter Dialog解决方案

小呆呆666

flutter android 大前端 iOS Developer

您的出门“最后三公里”问题解决啦!

亚马逊云科技 (Amazon Web Services)

密码合规测评新服务:“微咨询”正式发布

腾讯安全云鼎实验室

密码合规 微咨询

一妹子揭露美团面试中一些不愉快的事情(Java岗)

Java架构师迁哥

Flutter GetX使用---简洁的魅力!

小呆呆666

flutter android 大前端 iOS Developer

5分钟速读之Rust权威指南(三十二)互斥体

wzx

rust

为你的身份证“加盾”,鉴伪更精准,传输更安全

百度大脑

人工智能 数据安全 身份证

解放生产力,自动化生成Vue组件文档

vivo互联网技术

Vue 自动化 大前端 组件

前端 JavaScript 中 JSON.stringify() 的基本用法

编程三昧

JavaScript 大前端

混合推荐系统介绍(二十二)

Databri_AI

推荐系统 计算

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