Commit 639aafe0 by 段启岩

更新消息队列监听器架构2.0

parent 240f7243
......@@ -25,6 +25,6 @@ public class KafkaInitialConfig {
*/
@Bean
public NewTopic initialTopic() {
return new NewTopic(topicProperties.getSearchItemUpdate(),8, (short) 1 );
return new NewTopic(topicProperties.getSearchItemUpdate(),16, (short) 1 );
}
}
package cn.meteor.beyondclouds.core.listener;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType;
import cn.meteor.beyondclouds.util.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* 数据更新监听器
* 监听本系统所有的数据更新 操作:更新操作包括
* @author meteor
*/
@Slf4j
public class DataItemChangeConsumer implements TopicConsumer, ApplicationContextAware {
private Collection<DataItemChangeListener> listeners;
@Override
@KafkaListener(topics = "${beyondclouds.kafka.topics.search-item-update}")
public final void onMessage(ConsumerRecord<?, String> record) {
Optional<String> kafkaMessage = Optional.ofNullable(record.value());
if (kafkaMessage.isPresent()) {
DataItemChangeMessage dataItemChangeMessage;
try {
dataItemChangeMessage = JsonUtils.toBean(kafkaMessage.get(), DataItemChangeMessage.class);
log.debug("接收到kafka消息:{}", dataItemChangeMessage.toString());
// 调用每个监听器对应的消息处理函数
DataItemChangeType changeType = dataItemChangeMessage.getChangeType();
listeners.forEach(listener -> {
switch (changeType) {
case ADD:
listener.onDataItemAdd(dataItemChangeMessage);
break;
case DELETE:
listener.onDataItemDelete(dataItemChangeMessage);
break;
case UPDATE:
listener.onDataItemUpdate(dataItemChangeMessage);
break;
case USER_NICK_UPDATE:
listener.onUserNickUpdate(dataItemChangeMessage);
break;
case USER_AVATAR_UPDATE:
listener.onUserAvatarUpdate(dataItemChangeMessage);
break;
}
});
} catch (Exception e) {
e.printStackTrace();
log.error("DataItemUpdateMessage consume failed:{}", e.getMessage());
}
}
}
@Override
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
Map<String, DataItemChangeListener> listenerMap = ctx.getBeansOfType(DataItemChangeListener.class);
if (!CollectionUtils.isEmpty(listenerMap)) {
this.listeners = listenerMap.values();
} else {
this.listeners = List.of();
}
}
}
package cn.meteor.beyondclouds.core.listener;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType;
import cn.meteor.beyondclouds.util.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import java.util.Optional;
/**
* 数据更新监听器
......@@ -15,47 +9,7 @@ import java.util.Optional;
* @author meteor
*/
@Slf4j
public class DataItemChangeListener implements TopicListener {
@Override
@KafkaListener(topics = "${beyondclouds.kafka.topics.search-item-update}")
public final void onMessage(ConsumerRecord<?, String> record) {
Optional<String> kafkaMessage = Optional.ofNullable(record.value());
if (kafkaMessage.isPresent()) {
DataItemChangeMessage dataItemChangeMessage;
try {
dataItemChangeMessage = JsonUtils.toBean(kafkaMessage.get(), DataItemChangeMessage.class);
log.debug("接收到kafka消息:{}", dataItemChangeMessage.toString());
// 调用对应的消息处理函数
DataItemChangeType changeType = dataItemChangeMessage.getChangeType();
switch (changeType) {
case ADD:
onDataItemAdd(dataItemChangeMessage);
break;
case DELETE:
onDataItemDelete(dataItemChangeMessage);
break;
case UPDATE:
onDataItemUpdate(dataItemChangeMessage);
break;
case USER_NICK_UPDATE:
onUserNickUpdate(dataItemChangeMessage);
break;
case USER_AVATAR_UPDATE:
onUserAvatarUpdate(dataItemChangeMessage);
break;
}
} catch (Exception e) {
e.printStackTrace();
log.error("DataItemUpdateMessage consume failed:{}", e.getMessage());
}
}
}
public class DataItemChangeListener {
/**
* 有新数据添加到数据库
......
......@@ -7,7 +7,7 @@ import org.apache.kafka.clients.consumer.ConsumerRecord;
* 监听Kafka队列里面的消息
* @author meteor
*/
public interface TopicListener {
public interface TopicConsumer {
/**
* 订阅的topic有新的消息
......
package cn.meteor.beyondclouds.modules.blog.listener;
import cn.meteor.beyondclouds.core.listener.DataItemChangeListener;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 用户信息更新监听器
* @author meteor
*/
@Slf4j
@Component("blogUserInfoChangeListener")
public class UserInfoChangeListener extends DataItemChangeListener {
@Override
public void onUserAvatarUpdate(DataItemChangeMessage dataItemChangeMessage) {
log.debug("blog-用户头像更新:{}", dataItemChangeMessage);
}
}
......@@ -14,7 +14,7 @@ import cn.meteor.beyondclouds.modules.blog.mapper.BlogMapper;
import cn.meteor.beyondclouds.modules.blog.service.*;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.tag.service.ITagService;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
......@@ -154,7 +154,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
// 5.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.addMessage(SearchItemType.BLOG, blog.getBlogId())
DataItemChangeMessage.addMessage(DataItemType.BLOG, blog.getBlogId())
);
}
......@@ -204,7 +204,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
// 5.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.deleteMessage(SearchItemType.BLOG, blog.getBlogId())
DataItemChangeMessage.deleteMessage(DataItemType.BLOG, blog.getBlogId())
);
}
......@@ -379,7 +379,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
// 5.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.updateMessage(SearchItemType.BLOG, blog.getBlogId())
DataItemChangeMessage.updateMessage(DataItemType.BLOG, blog.getBlogId())
);
}
......
package cn.meteor.beyondclouds.modules.post.listener;
import cn.meteor.beyondclouds.core.listener.DataItemChangeListener;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 用户信息更新监听器
* @author meteor
*/
@Slf4j
@Component("postUserInfoChangeListener")
public class UserInfoChangeListener extends DataItemChangeListener {
@Override
public void onUserAvatarUpdate(DataItemChangeMessage dataItemChangeMessage) {
log.debug("post-用户头像更新:{}", dataItemChangeMessage);
}
}
package cn.meteor.beyondclouds.modules.project.listener;
import cn.meteor.beyondclouds.core.listener.DataItemChangeListener;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 用户信息更新监听器
* @author meteor
*/
@Slf4j
@Component("projectUserInfoChangeListener")
public class UserInfoChangeListener extends DataItemChangeListener {
@Override
public void onUserAvatarUpdate(DataItemChangeMessage dataItemChangeMessage) {
log.debug("project-用户头像更新:{}", dataItemChangeMessage);
}
}
......@@ -14,7 +14,7 @@ import cn.meteor.beyondclouds.modules.project.service.IProjectExtService;
import cn.meteor.beyondclouds.modules.project.service.IProjectService;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -102,7 +102,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
// 4.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.addMessage(SearchItemType.PROJECT, project.getProjectId())
DataItemChangeMessage.addMessage(DataItemType.PROJECT, project.getProjectId())
);
}
......@@ -139,7 +139,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
// 4.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.deleteMessage(SearchItemType.PROJECT, project.getProjectId())
DataItemChangeMessage.deleteMessage(DataItemType.PROJECT, project.getProjectId())
);
}
......@@ -218,7 +218,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
// 4.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.updateMessage(SearchItemType.PROJECT, project.getProjectId())
DataItemChangeMessage.updateMessage(DataItemType.PROJECT, project.getProjectId())
);
}
......
......@@ -11,7 +11,7 @@ import cn.meteor.beyondclouds.modules.question.service.*;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.tag.service.ITagService;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
......@@ -148,7 +148,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
// 6.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.addMessage(SearchItemType.QUESTION, question.getQuestionId())
DataItemChangeMessage.addMessage(DataItemType.QUESTION, question.getQuestionId())
);
}
......@@ -189,7 +189,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
// 9.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.deleteMessage(SearchItemType.QUESTION, question.getQuestionId())
DataItemChangeMessage.deleteMessage(DataItemType.QUESTION, question.getQuestionId())
);
}
......@@ -238,7 +238,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
// 6.发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.updateMessage(SearchItemType.QUESTION, question.getQuestionId())
DataItemChangeMessage.updateMessage(DataItemType.QUESTION, question.getQuestionId())
);
}
......
package cn.meteor.beyondclouds.modules.queue.message;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
......@@ -16,24 +16,32 @@ import java.io.Serializable;
@NoArgsConstructor
public class DataItemChangeMessage {
public DataItemChangeMessage(DataItemChangeType changeType, SearchItemType itemType, Serializable itemId) {
public DataItemChangeMessage(DataItemChangeType changeType, DataItemType itemType, Serializable itemId) {
this.itemId = itemId;
this.itemType = itemType;
this.changeType = changeType;
}
public static DataItemChangeMessage addMessage(SearchItemType itemType, Serializable itemId) {
public static DataItemChangeMessage addMessage(DataItemType itemType, Serializable itemId) {
return new DataItemChangeMessage(DataItemChangeType.ADD, itemType, itemId);
}
public static DataItemChangeMessage deleteMessage(SearchItemType itemType, Serializable itemId) {
public static DataItemChangeMessage deleteMessage(DataItemType itemType, Serializable itemId) {
return new DataItemChangeMessage(DataItemChangeType.DELETE, itemType, itemId);
}
public static DataItemChangeMessage updateMessage(SearchItemType itemType, Serializable itemId) {
public static DataItemChangeMessage updateMessage(DataItemType itemType, Serializable itemId) {
return new DataItemChangeMessage(DataItemChangeType.UPDATE, itemType, itemId);
}
public static DataItemChangeMessage userAvatarUpdateMessage(DataItemType itemType, Serializable itemId) {
return new DataItemChangeMessage(DataItemChangeType.USER_AVATAR_UPDATE, itemType, itemId);
}
public static DataItemChangeMessage userNickUpdateMessage(DataItemType itemType, Serializable itemId) {
return new DataItemChangeMessage(DataItemChangeType.USER_NICK_UPDATE, itemType, itemId);
}
/**
* 条目ID
*/
......@@ -42,7 +50,7 @@ public class DataItemChangeMessage {
/**
* 条目类型
*/
private SearchItemType itemType;
private DataItemType itemType;
/**
* 条目改变类型
......
package cn.meteor.beyondclouds.modules.search.entity;
import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
......@@ -27,7 +27,7 @@ public class SearchItem {
* @param itemType
* @param itemId
*/
public SearchItem(SearchItemType itemType, String itemId) {
public SearchItem(DataItemType itemType, String itemId) {
this.id = SearchItemId.of(itemType, itemId);
this.itemType = itemType;
this.itemId = itemId;
......@@ -46,7 +46,7 @@ public class SearchItem {
* 数据类型
*/
@Field(type = FieldType.Text)
private SearchItemType itemType;
private DataItemType itemType;
/**
* 数据标题
......
package cn.meteor.beyondclouds.modules.search.entity;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -11,16 +11,16 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class SearchItemId {
private SearchItemType itemType;
private DataItemType itemType;
private String itemId;
public SearchItemId(SearchItemType itemType, String itemId) {
public SearchItemId(DataItemType itemType, String itemId) {
this.itemType = itemType;
this.itemId = itemId;
}
public static SearchItemId of(SearchItemType searchItemType, String itemId) {
return new SearchItemId(searchItemType, itemId);
public static SearchItemId of(DataItemType dataItemType, String itemId) {
return new SearchItemId(dataItemType, itemId);
}
@Override
......
......@@ -3,16 +3,14 @@ package cn.meteor.beyondclouds.modules.search.enums;
import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.project.entity.Project;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.user.entity.User;
import lombok.Data;
import lombok.Getter;
/**
* @author meteor
*/
@Getter
public enum SearchItemType {
public enum DataItemType {
/**
* 用户
......@@ -36,7 +34,7 @@ public enum SearchItemType {
private Class<?> classOfItem;
SearchItemType(Class<?> classOfItem) {
DataItemType(Class<?> classOfItem) {
this.classOfItem = classOfItem;
}
}
......@@ -2,15 +2,11 @@ package cn.meteor.beyondclouds.modules.search.listener;
import cn.meteor.beyondclouds.core.listener.DataItemChangeListener;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.service.ISearchService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
* @author meteor
*/
......@@ -32,11 +28,11 @@ public class SearchItemItemChangeListener extends DataItemChangeListener {
@Override
public void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) {
searchService.deleteSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
searchService.updateSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
}
@Override
public void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) {
searchService.updateSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
searchService.deleteSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
}
}
package cn.meteor.beyondclouds.modules.search.service;
import cn.meteor.beyondclouds.modules.search.entity.SearchItem;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import java.util.Optional;
......@@ -15,32 +14,32 @@ public interface ISearchService {
/**
* 添加搜索条目
* @param searchItemType
* @param dataItemType
* @param itemId
*/
void saveSearchItem(SearchItemType searchItemType, String itemId);
void saveSearchItem(DataItemType dataItemType, String itemId);
/**
* 删除搜索条目
* @param searchItemType
* @param dataItemType
* @param itemId
*/
void deleteSearchItem(SearchItemType searchItemType, String itemId);
void deleteSearchItem(DataItemType dataItemType, String itemId);
/**
* 更新搜索条目
* @param searchItemType
* @param dataItemType
* @param itemId
*/
void updateSearchItem(SearchItemType searchItemType, String itemId);
void updateSearchItem(DataItemType dataItemType, String itemId);
/**
* 查找搜索条目
* @param searchItemType
* @param dataItemType
* @param itemId
* @return
*/
Optional<SearchItem> getSearchItem(SearchItemType searchItemType, String itemId);
Optional<SearchItem> getSearchItem(DataItemType dataItemType, String itemId);
/**
* 根据关键词分页搜索
......
......@@ -16,7 +16,7 @@ import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceExcep
import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.search.entity.SearchItem;
import cn.meteor.beyondclouds.modules.search.entity.SearchItemId;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import cn.meteor.beyondclouds.modules.search.repository.ISearchRepository;
import cn.meteor.beyondclouds.modules.search.service.ISearchService;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
......@@ -62,7 +62,7 @@ public class SearchServiceImpl implements ISearchService {
}
@Override
public void saveSearchItem(SearchItemType itemType, String itemId) {
public void saveSearchItem(DataItemType itemType, String itemId) {
SearchItem searchItem = getSearchItemInDb(itemType, itemId);
if (null != searchItem) {
searchRepository.save(searchItem);
......@@ -71,20 +71,20 @@ public class SearchServiceImpl implements ISearchService {
}
@Override
public void deleteSearchItem(SearchItemType itemType, String itemId) {
public void deleteSearchItem(DataItemType itemType, String itemId) {
searchRepository.deleteById(SearchItemId.of(itemType, itemId));
log.debug("elasticsearch-delete:{}", SearchItemId.of(itemType, itemId));
}
@Override
public void updateSearchItem(SearchItemType itemType, String itemId) {
public void updateSearchItem(DataItemType itemType, String itemId) {
SearchItem searchItem = getSearchItemInDb(itemType, itemId);
searchRepository.save(searchItem);
log.debug("elasticsearch-update:{}", searchItem);
}
@Override
public Optional<SearchItem> getSearchItem(SearchItemType itemType, String itemId) {
public Optional<SearchItem> getSearchItem(DataItemType itemType, String itemId) {
return searchRepository.findById(SearchItemId.of(itemType, itemId));
}
......@@ -110,7 +110,7 @@ public class SearchServiceImpl implements ISearchService {
List<User> userList = userPage.getRecords();
if (!CollectionUtils.isEmpty(userList)) {
userList.forEach(user -> {
saveSearchItem(SearchItemType.USER, user.getUserId());
saveSearchItem(DataItemType.USER, user.getUserId());
});
current++;
} else {
......@@ -126,7 +126,7 @@ public class SearchServiceImpl implements ISearchService {
List<Project> projectList = projectPage.getRecords();
if (!CollectionUtils.isEmpty(projectList)) {
projectList.forEach(project -> {
saveSearchItem(SearchItemType.PROJECT, String.valueOf(project.getProjectId()));
saveSearchItem(DataItemType.PROJECT, String.valueOf(project.getProjectId()));
});
current++;
} else {
......@@ -142,7 +142,7 @@ public class SearchServiceImpl implements ISearchService {
List<Question> questionList = questionPage.getRecords();
if (!CollectionUtils.isEmpty(questionList)) {
questionList.forEach(question -> {
saveSearchItem(SearchItemType.QUESTION, question.getQuestionId());
saveSearchItem(DataItemType.QUESTION, question.getQuestionId());
});
current++;
} else {
......@@ -158,7 +158,7 @@ public class SearchServiceImpl implements ISearchService {
List<Blog> questionList = blogPage.getRecords();
if (!CollectionUtils.isEmpty(questionList)) {
questionList.forEach(blog -> {
saveSearchItem(SearchItemType.BLOG, blog.getBlogId());
saveSearchItem(DataItemType.BLOG, blog.getBlogId());
});
current++;
} else {
......@@ -167,7 +167,7 @@ public class SearchServiceImpl implements ISearchService {
}
}
private SearchItem getSearchItemInDb(SearchItemType itemType, String itemId) {
private SearchItem getSearchItemInDb(DataItemType itemType, String itemId) {
SearchItem searchItem = null;
try {
switch (itemType) {
......@@ -196,7 +196,7 @@ public class SearchServiceImpl implements ISearchService {
private SearchItem buildSearchItemFromProject(String projectId) throws ProjectServiceException {
ProjectDetail projectDetail = projectService.getProject(projectId);
if (null != projectDetail) {
SearchItem searchItem = new SearchItem(SearchItemType.PROJECT, projectId);
SearchItem searchItem = new SearchItem(DataItemType.PROJECT, projectId);
searchItem.setTitle(projectDetail.getProjectName());
searchItem.setContent(projectDetail.getProjectDetail());
searchItem.setCover(projectDetail.getCover());
......@@ -211,7 +211,7 @@ public class SearchServiceImpl implements ISearchService {
private SearchItem buildSearchItemFromUser(String userId) {
User user = userService.getById(userId);
if (null != user) {
SearchItem searchItem = new SearchItem(SearchItemType.USER, userId);
SearchItem searchItem = new SearchItem(DataItemType.USER, userId);
searchItem.setTitle(user.getNickName());
searchItem.setCover(user.getUserAvatar());
searchItem.setDescription(user.getSignature());
......@@ -225,7 +225,7 @@ public class SearchServiceImpl implements ISearchService {
private SearchItem buildSearchItemFromQuestion(String questionId) throws QuestionServiceException, QuestionTagServiceException {
QuestionDetail questionDetail = questionService.questionDetails(questionId);
if (null != questionDetail) {
SearchItem searchItem = new SearchItem(SearchItemType.QUESTION, questionId);
SearchItem searchItem = new SearchItem(DataItemType.QUESTION, questionId);
searchItem.setTitle(questionDetail.getQuestionTitle());
searchItem.setContent(questionDetail.getQuestionDetail());
searchItem.setDescription(questionDetail.getQuestionAbstract());
......@@ -239,7 +239,7 @@ public class SearchServiceImpl implements ISearchService {
private SearchItem buildSearchItemFromBlog(String blogId) throws BlogServiceException {
BlogDetail blogDetail = blogService.getBlog(blogId, Subject.anonymous(this.getClass().getName()));
if (null != blogDetail) {
SearchItem searchItem = new SearchItem(SearchItemType.BLOG, blogId);
SearchItem searchItem = new SearchItem(DataItemType.BLOG, blogId);
searchItem.setTitle(blogDetail.getBlogTitle());
searchItem.setContent(blogDetail.getContent());
searchItem.setCover(blogDetail.getCover());
......
......@@ -16,7 +16,7 @@ import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.tag.service.ITagService;
import cn.meteor.beyondclouds.modules.user.entity.User;
......@@ -236,12 +236,30 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
@Override
public void alterBaseInfo(User user) throws UserServiceException {
boolean userNickUpdate = !StringUtils.isEmpty(user.getNickName());
boolean userAvatarUpdate = !StringUtils.isEmpty(user.getUserAvatar());
updateById(user);
if (userNickUpdate) {
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.userNickUpdateMessage(DataItemType.USER, user.getUserId())
);
}
if (userAvatarUpdate) {
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.userAvatarUpdateMessage(DataItemType.USER, user.getUserId())
);
}
// 发送消息到消息队列
messageQueueService
.sendItemUpdateMessage(
DataItemChangeMessage.updateMessage(SearchItemType.USER, user.getUserId())
DataItemChangeMessage.updateMessage(DataItemType.USER, user.getUserId())
);
}
......
......@@ -3,7 +3,7 @@ package cn.meteor.beyondclouds.modules.queue.service.impl;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -26,7 +26,7 @@ public class MessageQueueServiceImplTest {
// messageQueueService.send(message);
DataItemChangeMessage itemUpdateMessage = new DataItemChangeMessage();
itemUpdateMessage.setItemId("123");
itemUpdateMessage.setItemType(SearchItemType.PROJECT);
itemUpdateMessage.setItemType(DataItemType.PROJECT);
itemUpdateMessage.setChangeType(DataItemChangeType.ADD);
messageQueueService.sendItemUpdateMessage(itemUpdateMessage);
}
......
......@@ -2,7 +2,7 @@ package cn.meteor.beyondclouds.modules.search.repository;
import cn.meteor.beyondclouds.modules.search.entity.SearchItem;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import org.elasticsearch.index.query.DisMaxQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
......@@ -31,7 +31,7 @@ public class ISearchRepositoryTest {
searchItem.setTitle("ok");
searchItem.setCreateTime(new Date());
searchItem.setItemId("aad");
searchItem.setItemType(SearchItemType.BLOG);
searchItem.setItemType(DataItemType.BLOG);
searchRepository.save(searchItem);
}
......
package cn.meteor.beyondclouds.modules.search.service.impl;
import cn.meteor.beyondclouds.modules.search.entity.SearchItem;
import cn.meteor.beyondclouds.modules.search.enums.SearchItemType;
import cn.meteor.beyondclouds.modules.search.enums.DataItemType;
import cn.meteor.beyondclouds.modules.search.service.ISearchService;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -11,8 +11,6 @@ import org.springframework.test.context.junit4.SpringRunner;
import java.util.Optional;
import static org.junit.Assert.*;
@SpringBootTest
@RunWith(SpringRunner.class)
public class SearchServiceImplTest {
......@@ -22,12 +20,12 @@ public class SearchServiceImplTest {
@Test
public void saveSearchItem() {
searchService.saveSearchItem(SearchItemType.BLOG, "123");
searchService.saveSearchItem(DataItemType.BLOG, "123");
}
@Test
public void getSearchItem() {
Optional<SearchItem> optionalSearchItem = searchService.getSearchItem(SearchItemType.BLOG, "123");
Optional<SearchItem> optionalSearchItem = searchService.getSearchItem(DataItemType.BLOG, "123");
if (optionalSearchItem.isPresent()) {
System.out.println(optionalSearchItem.get());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment