问题出现场景
当时一个项目的小姐姐,找到我说,调我们同步用户数据的接口有重复数据,经过数据发现同步过来的数据插入数据的时间是相同的,再看日志发现我们这边有三次调用的记录,看小姐姐写的服务的日志,调用接口处只打印了一次调取的日志。
与小姐姐语音看过代码
反复看小姐姐的代码逻辑发现,没有啥问题,错误后有几次补偿调用,也没有问题;小姐姐有着急,说家里测试环境,没有问题,在客户测试环境有这个问题,我当时也觉得奇怪。感觉两边代码都没问题。
代码没问题,看dubbo配置呗
先看了我们provide的配置,没有相关的重复调取的配置再看小姐姐那块,发现consumers里面有个retries=3的配置,这个失败重试次数,引起我的怀疑,难道是这个问题,果断把这个配置设置为retries=0,重启服务,发现报错了,报dubbo调用超时,默认是1000ms
修改dubbo超时配置
设置timeout=5000后重启,发现调用同步接口成功并且只有一条数据;
多谢大佬,,,,,,溢美之词,啧啧。。。我只是淡定的说小事
总结
dubbo问题,提供者与消费者的配置要多看看熟悉一下;比如之前遇到过返回数据太大,报错的可以在服务方设置dubbo允许返回的字节dubbo.protocopayload:20971520还有dubbo的invoke命令,dubbo的高版本默认不开启invoke执行的需要手动配置dubbo.protocotelnet:invoke
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点