代驾:RabbitMQ
一、RabbitMQ
学习目标:
能够说出Rabbitmq应用场景
能够说出Rabbitmq消息不丢失解决方案
掌握Rabbitmq实现普通消息的收发
掌握Rabbitmq实现延迟消息
基于Rabbitmq消息队列实现商品数据同步
基于Rabbitmq消息队列实现订单延迟关闭
1、目前存在的问题
订单服务取消订单问题
乘客下单后,...
单独拿出来看很明显
在代码中L的大小写直接决定了是包装类还是基本类型
基本类型是不允许有null值的,所以报错的原因就是大写L写成了小l
居然是pom文件依赖问题,明明已经引入了,重写一下就不报错了
换成
<!--mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>...
代驾:订单执行
一、结束代驾
司机到达代驾终点,就可以结束代驾了,结束代驾我们要输入其他费用(路桥费、停车费与其他费用)、计算订单实际里程、计算代驾实际费用、系统奖励、分账信息与生成账单。
1、计算订单实际里程
订单实际里程其实就是把MongoDB中该订单的GPS定位坐标都给取出来,以时间排序,连接成连线,这个线的距离就是时间里程。
1.1、地图微服务接口...
代驾:订单执行
一、MongoDB入门
1、MongoDB
1.1、MongoDB 概念
1.1.1、什么是MongoDB
MongoDB 是在2007年由DoubleClick公司的几位核心成员开发出的一款分布式文档数据库,由C++语言编写。
目的是为了解决数据大量增长的时候系统的可扩展性和敏捷性。MongoDB要比传统的关系型数据库简单很多。
在Mong...
代驾:订单执行
一、加载当前订单
无论司机端还是乘客端的小程序,如果遇到微信闪退、页面切换、重新登录小程序之后,只要页面回到首页,都必须加载当前的订单,然后跳转到当前订单的执行状态页面。
前面我们写了模拟接口,当前我们来把这部分接口实现了。
司机端效果如图(乘客端类似):
1、乘客端查找当前订单
1.1、订单微服务接口
1.1.1、OrderInfoCon...
代驾:分布式事务
一、分布式事务Seata
1、事务回顾
1.1、什么是事务
提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。
1.2、事务的作用
保证数据一致性
1.3、事务ACID四大特性
A:原子性(Atomicity)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事...
1. Redis原生方法
Redis的setnx在代码中是RedisTemplate.setIfAbsent(并不是.setnx)
注意为了防止在过程中异常导致无法释放锁,需要设置过期时间来解决,但是仍然存在问题,如果业务7秒处理,锁三秒释放,会出现释放不属于自己的锁的情况(锁是一个共用的,别人用着呢就被释放了)
使用UUID给锁加上唯一标识来解决误...
多线程访问测试工具
配置好java环境后,双击bin目录下的jmeter.bat
下载地址:https://www.ilanzou.com/s/OEYyMvSu?code=ssdp
乐观锁就是在数据库记录后面加上 version版本号进行识别
当两个进程同时修改同一条记录时
两个进程同时读取到数据,此时version版本号为0
进程一率先完成修改并且提交修改,同时修改版本号为1
进程二落后一些,在提交的时候读取版本号version发现是1而不是刚才读取到的0,此时不能提交
乐观锁避免了并发“超卖”的问题
解决办法:https://blog.csdn.net/qq_45037155/article/details/126260002
解决方法:
在数据库连接 URL 中添加参数allowPublicKeyRetrieval=true。
例如,如果你的连接 URL 是jdbc:mysql://localhost:3306/your_database,
修改为jd...
代驾:司机抢单
一、开启接单服务
前面乘客已经下单,新订单消息已经加入司机临时队列,接下来我们把司机端的开启接单到抢单的流程写一下。
开启接单我们要做哪些操作呢?
1、判断司机认证状态,只要认证通过了的司机才能接单,司机登录信息包含司机认证状态(已开发)
2、判断司机当日是否已做人脸识别,司机每天必须做一次人脸识别,如果未做,跳转到人脸识别页面
3、更新司机...
微信开发者工具双击没反应,打不开,前两天还能用呢,今天测试代码崩溃了
解决办法参考:https://developers.weixin.qq.com/community/minihome/article/doc/000ee4b8bfcee072932ef5d4156813
我的解决路径
下载: https://dldir1.qq.com/WechatWebD...
乘客下单(二)
一、搜索附近司机
1、Redis的Geo功能
前面我们创建了订单,但是略过了寻找附近适合接单的司机。接下来完善这部分功能,那就先来看看怎么查询附近的司机吧。假设司机端的小程序实时把自己的GPS定位上传,然后定位信息缓存到Redis里面。咱们怎么能利用Redis计算出,上车点方圆几公里的司机都有谁呢?这就需要使用Redis的Geo功能。
htt...