rocketmq-sdk 错误以及解决方法
前言
rocketmq是阿里巴巴开源的分布式消息中间件,本文将介绍在使用rocketmq-sdk时遇到的错误以及解决方法。
背景
本身我们公司是有购买阿里云的rocketmq服务的,一些日志数据的消峰填谷,以及一些异步任务的处理都是通过rocketmq来实现的。
然后为了让这个服务继续发光发热,我们打算将一部分laravel框架的项目的 最终一致性
问题的解决方案也用rocketmq去解决。
利用的方法是使用 rocketmq 的 事务消息.
顺便附上 事务消息 解决 最终一致性
问题的流程图。
问题
问题一
php8.0之后,当声明函数或方法时,可选参数(即未指定默认值的参数)必须位于必需参数之后。
问题二
压根就没在
MQTransProducer
定义过messageTag
,为什么在sdk
里直接用这个属性?我不理解。
解决
解决方案只有修改源码,给阿里云发了工单,给的回复是:你看上一次更新已经在2023年1月了。
。
所以只能自己动手了。
其实就目前这2个问题都不难解决,第一个问题因为是php8.0+
的php的建议
而且修改的话所有sdk里相关的使用到 MQTransProducer
构造函数的地方都得改。我嫌麻烦就没改。因为不影响运行。
第二个问题其实本质应该也是php的一个警告,但是会影响代码的运行,所以我就改了。
解决的方法也很简单。就是在 MQTransProducer
类里加上 messageTag
属性。
或者使用 $this->messageTag ?? null
来解决。
总结
这个问题其实就是一个警告,不影响代码的运行。但是如果你的代码是严格模式的话,就会报错。
顺便越发觉得阿里云也在走下铺路,至少在php
的sdk
上是这样的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 闲聊茶泡饭!