From 2fe026b69a2199b18267947627a5f1a92d9bb0d0 Mon Sep 17 00:00:00 2001 From: fanxb Date: Tue, 12 Nov 2019 00:43:32 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat:=20[=E5=90=8E=E5=8F=B0]:?= =?UTF-8?q?=E5=AE=8C=E6=88=90mysql=E5=A4=87=E4=BB=BD=E5=88=B0es=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BookmarkBackupController.java | 36 ++++++++++++ .../bookmark/dao/BookmarkBackupDao.java | 25 +++++++++ .../service/BookmarkBackupService.java | 55 +++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkBackupController.java create mode 100644 bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkBackupDao.java create mode 100644 bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkBackupService.java diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkBackupController.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkBackupController.java new file mode 100644 index 0000000..5577011 --- /dev/null +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkBackupController.java @@ -0,0 +1,36 @@ +package com.fanxb.bookmark.business.bookmark.controller; + +import com.fanxb.bookmark.business.bookmark.service.BookmarkBackupService; +import com.fanxb.bookmark.common.entity.Result; +import com.fanxb.bookmark.common.util.ThreadPoolUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Created with IntelliJ IDEA + * Created By Fxb + * Date: 2019/11/12 + * Time: 0:35 + * + * @author fanxb + */ +@RestController +@RequestMapping("/bookmarkBackup") +public class BookmarkBackupController { + + private BookmarkBackupService backupService; + + @Autowired + public BookmarkBackupController(BookmarkBackupService backupService) { + this.backupService = backupService; + } + + @PostMapping("/mysqlToEs") + public Result backupToEs() { + //异步执行同步任务 + ThreadPoolUtil.execute(() -> backupService.backupToEs()); + return Result.success(null); + } +} diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkBackupDao.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkBackupDao.java new file mode 100644 index 0000000..42848df --- /dev/null +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkBackupDao.java @@ -0,0 +1,25 @@ +package com.fanxb.bookmark.business.bookmark.dao; + +import com.fanxb.bookmark.common.entity.Bookmark; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Created with IntelliJ IDEA + * Created By Fxb + * Date: 2019/11/12 + * Time: 0:24 + */ +public interface BookmarkBackupDao { + + /** + * 分页获取所有的书签 + * @param size 大小 + * @param startIndex 开始下标 + * @return + */ + @Select("select * from bookmark order by bookmarkId limit ${startIndex},${size}") + List getBookmarkListPage(@Param("size") int size,@Param("startIndex") int startIndex); +} diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkBackupService.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkBackupService.java new file mode 100644 index 0000000..163d342 --- /dev/null +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkBackupService.java @@ -0,0 +1,55 @@ +package com.fanxb.bookmark.business.bookmark.service; + +import com.fanxb.bookmark.business.bookmark.dao.BookmarkBackupDao; +import com.fanxb.bookmark.business.bookmark.dao.BookmarkDao; +import com.fanxb.bookmark.common.constant.EsConstant; +import com.fanxb.bookmark.common.entity.Bookmark; +import com.fanxb.bookmark.common.entity.EsEntity; +import com.fanxb.bookmark.common.util.EsUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created with IntelliJ IDEA + * Created By Fxb + * Date: 2019/11/12 + * Time: 0:22 + * + * @author fanxb + */ +@Service +public class BookmarkBackupService { + + @Autowired + private BookmarkDao bookmarkDao; + @Autowired + private BookmarkBackupDao bookmarkBackupDao; + + @Autowired + private EsUtil esUtil; + + /** + * 一次同步BACKUP_SIZE条到es中 + */ + private static final int BACKUP_SIZE = 500; + + /** + * 功能描述: 将mysql数据同步到es中 + * + * @author fanxb + * @date 2019/11/12 0:22 + */ + public void backupToEs() { + int start = 0; + List list; + while ((list = bookmarkBackupDao.getBookmarkListPage(BACKUP_SIZE, start)).size() != 0) { + List batchList = new ArrayList<>(list.size()); + list.forEach(item -> batchList.add(new EsEntity<>(item.getBookmarkId().toString(), item))); + esUtil.insertBatch(EsConstant.BOOKMARK_INDEX, batchList); + start += BACKUP_SIZE; + } + } +}