- 博客(6)
- 收藏
- 关注
原创 Redisson实现延时任务
其中要包含延迟时间和任务类型,这里定义任务类型的目的是为了让消费者在消费时能够找到具体的消费策略,通过任务类型能够使得这个模型适用于任意的延迟消费场景。// 任务类型 private Integer taskType;以上就是使用Redisson实现延迟任务的全部过程,其实实现起来并不复杂,因为是第一次使用Redisson的延迟队列,所以验证过程比较长,主要是防止重复消费。另外Redisson延迟队列的延迟队列实现原理,后续再开个帖子分享下,主要就是使用redis的sorted_set。
2023-04-24 15:45:39
883
原创 【策略模式】
业务场景中,当不同的意愿任务结束后,会有不同的动作,比如加密、解密、签署等。这些操作都是基于任务的类型进行区分,可以使用策略模式对代码进行优化,减少代码中的if…else…从而达到“对修改关闭,对扩展开放”的目的。后续再新增任务类型时,不会影响到其他任务类型的处理逻辑,减少测试回归的范围。介绍该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算
2022-03-30 15:03:46
506
原创 事务中使用分布式锁问题
项目场景:提示:这里简述项目相关背景:场景:监听订单中心支付完成消息,生成对应的用户订单,生成服务。加了分布式锁,但是还是有重复订单落库。问题描述集群模式下,采用分布式锁控制,保证只有一个服务能够得到执行。在获取到分布式锁之后,首先根据订单号查询有没有入库过,如果没有入库才能继续执行。因为要落多张表,所以在service层加了@Transactional控制事务。伪代码如下 @Transactional(rollbackFor = Exception.class) public void cr
2022-03-30 14:12:39
6321
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人