开始
上面完成了用户下单到向商家微服务发型消息的流程。
处理收到的消息
这种接口不需要单独的声明一个类去实现它这里面的方法,我们只需要用莱姆达表达式或者是箭头函数这种类型去生成一个匿名的类。匿名的方法就可以了。
箭头后面是个方法
message是Delivery类型的
Delivery里面有个body,是一个字符数组类型的。
我们使用getBody方法就可以
将字符数组,转化成字符串。
收到了消息还要回发消息。我们还要走下面的流程,所以还要拿到Connection
我们要把String反序列化成dto,转化成dto的时候有可能抛出异常,所以我们在这里
推荐这种打印的方式,这是打印好准输出里面,不一定能打印到你想打印的地方。
所以这里我们引入slf4j
先把消息反序列化为dto
注入
查询到订单的信息后,后面可以进行逻辑操作了,其他的微服务都向订单的微服务发送消息,我们怎么知道这个消息是哪里来的??怎们知道消息是哪个微服务发来的
我们通过这个订单在数据库中的状态就知道是谁在给订单的微服务发送消息。
如果一开始状态是正在创建creating的状态,那么是商家微服务在给我们回消息。商家给我们回复消息后,我们会把消息变成商家已确认的状态。商家已确认后,如果再收到消息,那么骑手微服务给我们回消息。
所以这里我们要判断订单的状态
自动生成
先判断商家是否确认了,表示商家的业务走通了
更新订单的数据库信息。设置为商家已确认的状态
下面就要给骑手微服务发送消息,拿connection,拿channel
routingKey是骑手微服务声明的。
else商家微服务如果没有确认好。把订单的状态做成失败。