theme: nico
你们好,我是金金金。
场景
购物车里面有5个商品,用户勾选了并且提交订单了,此时需要删除购物车对应勾选的商品,
mq
的话涉及到传递用户信息~因为删除对应的购物车商品是需要传递用户信息来知晓对应用户的
- 生产者
- 消费者
排查
看报错很明显就是参数不支持,点击convertAndSend方法,可以看到第四个参数是MessagePostProcessor类型,我们传递的类型不对当然报错了
- 我们在看一下MessagePostProcessor是啥
这个函数是一个函数式接口,用于处理消息。其中,postProcessMessage(Message var1) 是一个必需的方法,用于对消息进行处理。另外,还提供了两个默认方法 postProcessMessage(Message message, Correlation correlation) 和 postProcessMessage(Message message, Correlation correlation, String exchange, String routingKey),用于在处理消息时提供额外的参数,但最终都会调用 postProcessMessage(Message var1) 方法进行实际的消息处理。
解决
-
生产者第四个参数new MessagePostProcessor接口重写postProcessMessage方法
-
消费者使用Message接收数据
测试
- 可以看到用户id已经拿到了,说明用户信息传递成功
总结
生产者使用
MessagePostProcessor
在消息发送前设置消息属性头,消费者使用Message
参数接收即可
- 编写有误还请大佬指正,万分感谢。