网易首页 > 网易号 > 正文 申请入驻

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

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 startingEmbeddedKafkaBroker", 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 startingEmbeddedKafkaBroker", 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 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
惊天大反转!特朗普向乌克兰下最后“狠话”!!!

惊天大反转!特朗普向乌克兰下最后“狠话”!!!

现代小青青慕慕
2024-11-26 10:21:16
突发消息!乌克兰泽连斯基正式宣布了!

突发消息!乌克兰泽连斯基正式宣布了!

现代小青青慕慕
2024-11-26 07:20:46
高盛预测:如果特朗普加收关税,未来2年,国际油价或大跌20%?

高盛预测:如果特朗普加收关税,未来2年,国际油价或大跌20%?

王爷说图表
2024-11-25 23:19:28
严重违纪违法,广东4名干部被处分

严重违纪违法,广东4名干部被处分

鲁中晨报
2024-11-26 21:40:06
8分惜败!辽篮遭逆转,新援首秀砍15分,弗格28分,王哲林复出了

8分惜败!辽篮遭逆转,新援首秀砍15分,弗格28分,王哲林复出了

萌兰聊个球
2024-11-26 19:02:20
史上最强Mate70首发,华为看不到对手了

史上最强Mate70首发,华为看不到对手了

李东阳朋友圈
2024-11-26 17:19:49
湘军攻破天京,兽性大发,李臣典日御十八女,脱阳而亡!

湘军攻破天京,兽性大发,李臣典日御十八女,脱阳而亡!

何为惠
2024-11-26 06:52:33
3名男子驱车参加婚礼 因导航错误从立交桥上坠亡

3名男子驱车参加婚礼 因导航错误从立交桥上坠亡

闪电新闻
2024-11-25 20:28:23
蔚山和海港本赛季联赛均夺冠,但目前亚冠分别排倒一和倒三

蔚山和海港本赛季联赛均夺冠,但目前亚冠分别排倒一和倒三

懂球帝
2024-11-26 16:10:26
福冈赛后曼昱等人的一席话,进一步掀开了马琳不为人知的另一面!

福冈赛后曼昱等人的一席话,进一步掀开了马琳不为人知的另一面!

田先生篮球
2024-11-26 16:19:32
江苏原常委赵少麟:开国上将之子,退休8年因其子赵晋而入狱

江苏原常委赵少麟:开国上将之子,退休8年因其子赵晋而入狱

文史旺旺旺
2024-11-25 21:04:27
奥运冠军吐槽深圳“电鸡”神出鬼没,深圳网友感谢“嘴替”

奥运冠军吐槽深圳“电鸡”神出鬼没,深圳网友感谢“嘴替”

南方都市报
2024-11-26 17:15:22
1.7亿欧!曼城连签两大中场,高层冬窗下血本,瓜帅松口气

1.7亿欧!曼城连签两大中场,高层冬窗下血本,瓜帅松口气

祥谈体育
2024-11-26 14:33:41
你被中国保护得太好了,所以成了傻白甜

你被中国保护得太好了,所以成了傻白甜

一个坏土豆
2024-11-24 20:18:39
本场戴帽!解说:巴尔加斯再踢三年可以归化了,到时候30岁也还好

本场戴帽!解说:巴尔加斯再踢三年可以归化了,到时候30岁也还好

直播吧
2024-11-26 20:24:13
她靠这张脸统一全球审美,被歧视了20年的笨蛋美人终于翻身了!

她靠这张脸统一全球审美,被歧视了20年的笨蛋美人终于翻身了!

新氧
2024-11-26 11:20:48
金融圈降薪裁员已进入第四波,我竟然找到了一个月薪10万的神仙岗位……

金融圈降薪裁员已进入第四波,我竟然找到了一个月薪10万的神仙岗位……

毯叔盘钱
2024-11-26 19:07:09
大器晚成,32岁巴恩斯爆发,创造NBA77年来独一无二的纪录

大器晚成,32岁巴恩斯爆发,创造NBA77年来独一无二的纪录

大西体育
2024-11-26 10:04:14
7年净亏800亿,中东土豪懵了

7年净亏800亿,中东土豪懵了

大猫财经Pro
2024-11-26 19:00:34
白宫意外泄密,证实俄罗斯雪藏战场情报,美特种部队早已对俄作战

白宫意外泄密,证实俄罗斯雪藏战场情报,美特种部队早已对俄作战

忠诚TALK
2024-11-26 09:57:36
2024-11-26 22:31:00
InfoQ
InfoQ
有内容的技术社区媒体
10433文章数 50923关注度
往期回顾 全部

科技要闻

"这是国产化最高,也是史上最强的Mate"

头条要闻

殡仪馆被指用炖盅当骨灰瓮 当地民政局:剩余同款弃用

头条要闻

殡仪馆被指用炖盅当骨灰瓮 当地民政局:剩余同款弃用

体育要闻

37岁,他用“半条右腿”重返巅峰

娱乐要闻

权威奖项沦为资本工具?谁来管一管

财经要闻

洪灏刘煜辉对谈实录 涉及A股、债务等!

汽车要闻

解决油车无法处理的难题 仰望U7数字底盘这么强

态度原创

艺术
本地
家居
亲子
手机

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

本地新闻

城市24小时|领跑万亿城市,武汉“开挂”了?

家居要闻

色彩搭配 活跃空间气氛

亲子要闻

新手爸爸第一次给宝宝拍嗝……宝宝:这令人窒息的爱!

手机要闻

5499元起!Mate 70/Mate 70 Pro参数对比:一直一曲双旗舰

无障碍浏览 进入关怀版