MQ传递用户信息


theme: nico

你们好,我是金金金。

image.png

场景

购物车里面有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) 方法进行实际的消息处理。

解决

  1. 生产者第四个参数new MessagePostProcessor接口重写postProcessMessage方法
    在这里插入图片描述

  2. 消费者使用Message接收数据
    在这里插入图片描述

测试

在这里插入图片描述

  • 可以看到用户id已经拿到了,说明用户信息传递成功

总结

生产者使用MessagePostProcessor在消息发送前设置消息属性头,消费者使用Message参数接收即可

  • 编写有误还请大佬指正,万分感谢。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值