Redian新闻
>
Spring for Apache Kafka 3.0 和 Spring for RabbitMQ 3.0 发布

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

公众号新闻

作者 | Johan Janssen
译者 | 明知山
策划 | 丁晓昀  

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 代码,没有供应商锁定,可以观察计时器和跟踪 KafkaTemplate、 RabbitTemplate 及监听器容器。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 之后,它就可以被用在每一个测试类中:

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(); }}

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

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

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

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

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

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

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

AsyncRabbitTemplate、RabbitStreamTemplate 和 RabbitStreamOperations 的 send 方法现在返回 CompletableFuture,而不是已弃用的 ListenableFuture。

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

更多信息可以在 Kafka 和 RabbitMQ 的 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(https://www.infoq.cn/article/iCQ44j3XyAEl2FgHSPQy

Spring Modulith 使用模块和事件组织 Spring Boot 3 应用(https://www.infoq.cn/article/F3I9jfBsZ4cyE2aD7K8U

InfoQ 2022 年趋势报告:Java 篇(https://www.infoq.cn/article/vl9UfPTm6oOPAUgYpN5c

声明:本文为 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

马化腾内部开炮:有些业务都活不下去了,周末还打球;阿里云香港服务器“史诗级”宕机;马斯克萌生退意 | Q资讯

奇点已来,推进All on Serverless有哪些困难、如何破局?| 解读Serverless的2022

解读数字化的2022:不再追求大而全的“军备竞赛”,用聚焦来提高转型“成功率”

如何更好地干掉微服务架构复杂性?

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
已发现16例本土XBB病例!中疾控称3个月内XBB变异株大规模流行的可能性极低!清华发现纳米抗体,对XBB、BF.7等均保持活性美国西南部美墨边境的沙漠国家公园行(4)大弯国家公园-东西两侧的旖旎风光对话 Spring 大神:Spring 生态系统的新时代来了!SAT是个种族主义的考试吗?China Strengthens Cyber Violence Policing After Teacher’s DeathThe Four Key Issues Facing China at the COP27 Climate SummitFor China’s Students, the COVID Wave Comes at the Cruelest TimeShenzhen Offers $2,800 Subsidy for Couples Having Third ChildOut with the old, in with the new. JuniorCoach is here for youXBB毒株迅猛来袭,XBB和XBB.1.5到底是什么?各国的传播情况如何?九大投行|Credit Suisse Securities Research Spring Program正在进行中!Chinese Professor Suspended For Racist, Homophobic SpeechSpringBoot+Prometheus+Grafana 实现自定义监控XBB毒株是什么?“阳康”后还会感染XBB毒株吗?关于XBB毒株,这些事情你需要知道!A Beijing Theater Is Committed to Screening Movies for the Blind中国人的苦日子和英国人的苦日子。Wu Zetian and the Quest for Feminism in All the Wrong PlacesDeciphering the Hanzisphere黎舒苇10.26.2022Go二次开发实战:K8s、Prometheus、Traefk的微服务网关The Desire for Twins Is Putting China’s Mothers in DangerHadoop/Spark 太重,esProc SPL 很轻Chase Total Checking 银行账户【$300 开户奖励,加上Savings的共$600(延长到4月19日了)】SpringBoot + Prometheus + Grafana 打造可视化监控一条龙!中国开源社区健康案例——Apache ShardingSphere社区消息队列原理和选型:Kafka、RocketMQ 、RabbitMQ 和 ActiveMQWaiting for Wealth: China’s Gen Z Wants Careers Before Children天赋“易昺(bǐng)”,创造历史!Lee Wong | Sherry Chen Event Talking PointsAfter Losing Her Son to a Chicago Shooting, She Tries to Move On不欠[电脑] [第八届机王争霸赛]专业MOD组——Project Mini by xmqzBunny Business Picks Up in the Year of the Rabbit美股SPAC|加密货币交易所 Coincheck 通过与 SPAC 合并在纳斯达克上市Spring Batch 5.0 发布,使用 JDK 17 作为基线版本并支持原生 Java
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。