# data-join
**Repository Path**: xglovecode/data-join
## Basic Information
- **Project Name**: data-join
- **Description**: 一款轻配置、多方式的缓存同步框架,基于mybatis拦截器实现向redis、mq等消息队列发送消息,用户实现Receiver来监听缓存更新事件,从而实现缓存的同步。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-05-01
- **Last Updated**: 2023-05-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Data-Join
多数据拦截、多消息队列的缓存同步框架
## 项目介绍
一款轻配置、多扩展的缓存同步框架,通用的数据更新拦截处理器。
## 架构设计

- 拦截器:是对数据将要改变时的拦截。如在MyBatisCacheSyncInterceptor(默认)会监听myabtis的更新操作,当发生更新时,调用sender发送更新事件。
- Sender:对数据更新事件通知的封装。可以使用RedisStreamSender发送至redis中(默认),也可以自定义sender发送至其他消息队列或事件广播中,只要能被后面的Hander监听到即可。
- Hander:负责监听事件发生,并调用相应的Receiver来处理。默认实现是RedisHandler,用于监听redis中stream流的变化。
- Receiver:用户实现的,用于处理数据更新后的操作。具体可见下面的快速开始。
## 快速开始
1. 导包(暂未上传至仓库,可以下载代码后,导入至本地仓库)
```java
cn.xgcode
data-join
0.0.1
```
2. 在实体类中,添加@CacheSyncModel注解
```java
/**
* 添加该注解,表示对应的表名、主键名
*/
@CacheSyncModel(table = "user", id = "id")
public class User implements Serializable {
private Long id;
//...
}
```
3. 编写Receiver,用于处理缓存更新
```java
@CacheSyncReceiver(table = "user")
public class UserReceiver implements Receiver {
@Override
public void receive(CacheSyncEvent cacheSyncEvent) {
// 处理逻辑
}
}
```
## 版本要求
- redis 5.0以上