写点什么

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

评论

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

Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!

Python猫

Python

【Netty】「项目实战」(一)如何构建多客户端聊天室

sidiot

Java 后端 Netty 6 月 优质更文活动

Linux 中的密码生成器:如何在命令行中生成随机密码

wljslmz

Linux 6 月 优质更文活动

【JAVA】浅说 AQS

sidiot

Java AQS 6 月 优质更文活动

对线面试官-Redis(缓存的三大问题)

派大星

Java 面试题

Vue3中常用的Composition(组合)API-watchEffect()函数

不觉心动

6 月 优质更文活动

Nop平台中的模块依赖关系

canonical

开源 低代码 低代码平台 Nop平台

【AI】浅谈使用正则化防止过拟合(上)

sidiot

人工智能 正则化 6 月 优质更文活动

【AI】浅谈使用正则化防止过拟合(下)

sidiot

人工智能 正则化 6 月 优质更文活动

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

汀丶人工智能

人工智能 深度学习 强化学习 DQN 6 月 优质更文活动

Vue3中常用的Composition(组合)API-set的两个注意点

不觉心动

6 月 优质更文活动

Kubernetes CNI 网络模型及常见开源组件

穿过生命散发芬芳

cni 6 月 优质更文活动

C语言字符串的常用操作

芯动大师

C语言 字符串数组 6 月 优质更文活动

Nautilus Chain:模块化Layer3架构为RWA赛道构建基础设施

鳄鱼视界

聚力领航,2023 开放原子全球开源峰会燃爆夏日开源热

开放原子开源基金会

OpenHarmony/HarmonyOS路由跳转并传值

坚果

OpenHarmony 6 月 优质更文活动

数据基建:埋点体系从认知到解决方案搭建

小鲸数据

埋点 用户行为分析 精细化运营 埋点框架 埋点设计

强化学习从基础到进阶-常见问题和面试必知必答[4]::深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

汀丶人工智能

人工智能 深度学习 强化学习 DQN 6 月 优质更文活动

攻克信创难题|海泰新一代信创迁移平台解决方案“神农二号”问世

电子信息发烧客

STM32采集传感器数据通过冒泡排序取稳定值

DS小龙哥

6 月 优质更文活动

四大因素解析:常规阻抗控制为什么只能是10%?

华秋电子

模块五作业:微博发评论高性能高可用架构

家有两宝

#架构训练营

蔚来手撕代码题:三个线程循环打印ABC

王磊

java面试

Ionic用于构建跨平台移动应用程序的开源框架

没有用户名丶

【Netty】「萌新入门」(五)Pipeline 与 ChannelHandler

sidiot

Java 后端 Netty 6 月 优质更文活动

强化学习从基础到进阶-案例与实践[4.1]:深度Q网络-DQN项目实战CartPole-v0

汀丶人工智能

人工智能 深度学习 强化学习 DQN 6 月 优质更文活动

详细介绍 `ls -ltr` 命令的功能和用法

wljslmz

Linux 6 月 优质更文活动

【网络安全】打造安全的应用程序:了解 SSDLC 的关键步骤

sidiot

SSDLC 6 月 优质更文活动

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