spring-cloud-alibaba
spring-cloud-alibaba copied to clipboard
[Announce] Spring Cloud Alibaba 2.2.5.RocketMQ.RC2 released
鉴于rocketmq-client版本迭代速度较快,而现release版本中stream-rocketmq使用的client版本比较老,很多rocketmq新特性也无法支持; 通过对issues的整理与内部讨论,现对stream-rocketmq做了一次重构,在使用上部分发生了变化,在修复bug的同时也增加了很多内容,如下:
RC1 版本的功能:
- 剥离 RocketMQ Spring Boot Starter,主要方便自定义功能
- 修复RocketMQ消息失败的反馈
- 规范了内部部分bean的签名
- 支持批量消费
- 支持异步消息回调处理
- 支持MessageConverter机制
- 支持自定义CustomizedTraceTopic
- 支持自定义消费最大重试次数
- 支持Push模式下指定消费起始位
- 支持自定义延迟消息的延迟等级(定时消息需要自行通过header处理)
- 支持阿里云rocketmq对接(没有充分测试)
- 支持可能常用bean的自定义,需要在配置中指定beanName;如MessageConverter, AllocateMessageQueueStrategy,MessageQueueSelector, MessageListener, TransactionListener,SendCallback, SendMessageHook,ErrorAcknowledgeHandler
- 使用上主要体现在配置参数的变化,这次跨度比较大,就没有做兼容处理;因为剥离了rocketmq-boot则相关注解无法直接使用,需自行引入依赖
RC2 版本的功能:
- 修复自定义bean无法被rockmq启用的问题
- 一些小的体验优化
后续计划: 1、支持consumer多个订阅 2、对spring stream 原生配置参数将充分利用 3、兼容RocketMQ Spring Boot Starter 4、弱化现有的强依赖关系绑定,为后续的pop消费做准备
当前rc版本的更新,必定有很多不足的地方,欢迎各位大佬参与和指导,社区有你更精彩。
https://github.com/alibaba/spring-cloud-alibaba/releases/tag/2.2.5-RocketMQ-RC1
新手册链接 https://github.com/alibaba/spring-cloud-alibaba/blob/rocketmq/spring-cloud-alibaba-docs/src/main/asciidoc-zh/rocketmq-new.adoc
版本发布快被你们玩坏了。乱七八糟。
版本发布快被你们玩坏了。乱七八糟。
不好意思,给你造成困扰了。 这是一个独立发行的RC版本,主要目的是将一组大的重构预先发布出来。而且很多同学对 RocketMQ 相关的新集成特性也期待很久了。 待这部分功能稳定了以后,这个分支的全部功能会回归主干的。届时,这个独立叉出来的分支也会关闭掉。
rocketmq-produce-example 指定binding为事务消息无效
spring.cloud.stream.rocketmq.bindings.output2.producer.transactional=true
如图:
看代码已经被移除了
spring.cloud.stream.rocketmq.bindings.output2.producer.producerType=Trans
我用上面替换了就好了。没有仔细看过代码 不知道用法是否正确
另外,在如图位置
无法将自己实现的TransactionListener加入到RocketMQBeanContainerCache,是未扫描到
我不清楚spring初始化的具体逻辑
我跑的是example
(好像是
Spring cloud上下文分层的关系
debug之后发现只能扫描到这几个bean
另外,在如图位置
无法将自己实现的TransactionListener加入到RocketMQBeanContainerCache,是未扫描到 我不清楚spring初始化的具体逻辑 我跑的是example (好像是~Spring cloud~上下文分层的关系
debug之后发现只能扫描到这几个bean
这个的原因是TransactionListener 先于RocketMQConfigBeanPostProcessor 初始化了,导致BeanPostProcessor#postProcessAfterInitialization获取不到这个bean,RocketMQBeanContainerCache也就没有了。你可以看下BeanPostProcessor的介绍
另外,在如图位置
无法将自己实现的TransactionListener加入到RocketMQBeanContainerCache,是未扫描到 我不清楚spring初始化的具体逻辑 我跑的是example (好像是~Spring cloud~上下文分层的关系
debug之后发现只能扫描到这几个bean
这个的原因是TransactionListener 先于RocketMQConfigBeanPostProcessor 初始化了,导致BeanPostProcessor#postProcessAfterInitialization获取不到这个bean,RocketMQBeanContainerCache也就没有了。你可以看下BeanPostProcessor的介绍
我理解的BeanPostProcessor是会给spring容器里的每一个bean做处理,与注入的先后顺序无关,如果使用时需要考虑注入顺序的问题,那这个方法使用上会给使用者带来很大的困扰,spring大概不会这么做
这个问题,后面会被修复;同时也欢迎大家的积极反馈和参与。
这个问题,后面会被修复;同时也欢迎大家的积极反馈和参与。
我没有研究过Spring cloud steam将上下文分层的目的是什么。我修复该问题的手段是把RocketMQConfigBeanPostProcessor的注入从spring.binders文件移动到了spring.factories中间,使得他能直接在parent context初始化从而代理到我们自定义的bean 上述操作我提交了一个pr--fix issus#2040
大家在测试的时候,尽可能使用rocketmq的配置参数,spring stream原生的配置参数目前对接的不多; com.alibaba.cloud.stream.binder.rocketmq.properties.RocketMQConsumerProperties com.alibaba.cloud.stream.binder.rocketmq.properties.RocketMQProducerProperties wiki文档若哪个小伙伴有时间可帮忙更新下
啥情况,没动静了?
请问什么大概什么时候能稳定?能合并到主干
请问后续怎么了呢?
预计2.2.7版本就会合并到主干并发布重构后的第一个release版本
快点吧,两年了。
mark