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:不再追求大而全的“军备竞赛”,用聚焦来提高转型“成功率”

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

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

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