请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于重构后的receive()方法参数类型问题

由于在前一小节重构了内容中心,最后提交出去的是一段JSON字符串。在审批了一篇分享后,内容中心这边消费了这次消息,报了一个异常错误,nested exception is java.lang.IllegalStateException: argument type mismatch,但是积分添加都正常执行了。为了干掉这个错误提示,我把内容中心的receive方法改成如下:

//    原来的代码
//    public void receive(UserAddBonusMsgDTO message) {
//        this.userService.addBonus(message);
//    }

// 修改后
    public void receive(String message) {
        UserAddBonusMsgDto userAddBonusMsgDto  = JSON.parseObject(message, UserAddBonusMsgDto.class);
        this.userService.addBonus(userAddBonusMsgDto);
    }

改成这样子后,错误提示就不再出现了。按目前我的理解是这里在修改代码前已经不会添加积分才对,麻烦老师指点其中玄妙之处。

正在回答

3回答

您好,我不是太明白您的问题…主要是搞清楚问题复现的场景,以及时序。
您那样修改也是OK的,原代码是利用spring自带的消息反序列化,把json消息转成对象。
您修改后是自己实现反序列化,都是可以的。

0 回复 有任何疑惑可以回复我~
  • 提问者 沁尘 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-08-10 21:57:51
L灬Lawliet 2019-08-16 14:50:35
这样也可以 用户中心也不会有错误提示了
@StreamListener(Sink.INPUT)
public void receive(Message<UserAddBonusMsgDTO> message) {
    this.userService.addBonus(message.getPayload());
}


2 回复 有任何疑惑可以回复我~
L灬Lawliet 2019-08-16 16:47:36

boot 与 cloud的版本看看一不一致

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号