提交 29fd9c17 编写于 作者: yubinCloud's avatar yubinCloud

10-10 将业务日志流水号传递给异步线程,方便运维查问题

上级 ad50ad23
......@@ -18,11 +18,11 @@ import io.github.yubincloud.fairywiki.utils.CopyUtil;
import io.github.yubincloud.fairywiki.utils.RedisUtil;
import io.github.yubincloud.fairywiki.utils.RequestContext;
import io.github.yubincloud.fairywiki.utils.SnowFlake;
import io.github.yubincloud.fairywiki.websocket.WebSocketServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.slf4j.MDC;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
......@@ -89,6 +89,7 @@ public class DocService {
/**
* 根据 DocSaveReqDto 来保存一个 doc 记录,若 id 为空则新增,不为空则更新
*/
@Transactional
public void save(DocSaveReqDto reqDto) {
Doc docRecord = CopyUtil.copy(reqDto, Doc.class);
Content docContent = CopyUtil.copy(reqDto, Content.class);
......@@ -150,7 +151,8 @@ public class DocService {
}
// 向 ws 推送消息
Doc docInDb = docMapper.selectByPrimaryKey(docId);
wsService.sendInfo("【" + docInDb.getName() + "】被点赞!");
String logId = MDC.get("LOG_ID");
wsService.sendInfo("【" + docInDb.getName() + "】被点赞!", logId);
}
/**
......
package io.github.yubincloud.fairywiki.service;
import io.github.yubincloud.fairywiki.websocket.WebSocketServer;
import org.slf4j.MDC;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
......@@ -12,8 +13,14 @@ public class WsService {
@Resource
private WebSocketServer webSocketServer;
/**
* 以异步的方式将信息通过 websocket 发送给前端
* @param info 所要发送的信息
* @param logId LOG 的 id,使得本次异步所开的线程也能与原先的线程记录在同一个 LOG 号下,方便运维查找
*/
@Async
public void sendInfo(String info) {
public void sendInfo(String info, String logId) {
MDC.put("LOG_ID", logId);
webSocketServer.sendInfo(info);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册