分布式 ID 生成器
我们采用的是开源的 twitter( 非官方中文惯称:推特.是国外的一个网站,是一个社交网络及微博客服务) 的 snowflake 算法。
(1)将“配置文件/工具类”下的 IdWorker.java 拷贝到 common 工程
(2)在 XXX-order-service 工程的 spring 配置文件中添加配置
<bean id="idWorker" class="util.IdWorker"> <!-- IdWorker工具类,放在util包下 -->
<!-- 进程 ID -->
<constructor-arg index="0" value="0"></constructor-arg>
<!-- 数据中心 ID -->
<constructor-arg index="1" value="0"></constructor-arg>
</bean>
后端代码
服务实现层
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private IdWorker idWorker;
public void add(TbOrder order) {
//得到购物车数据
List<Cart> cartList = (List<Cart>)
redisTemplate.boundHashOps("cartList").get( order.getUserId() );
for(Cart cart:cartList){
long orderId = idWorker.nextId();
TbOrder tborder=new TbOrder();//新创建订单对象
tborder.setOrderId(orderId);//订单 ID
.....
}
redisTemplate.boundHashOps("cartList").delete(order.getUserId());
}
附:IdWorder.java
<