liukx e64f217d2e 告警分组的核心代码 | 2 years ago | |
---|---|---|
.. | ||
src | 3 years ago | |
README.md | 3 years ago | |
pom.xml | 2 years ago |
pom.xml
<dependency>
<groupId>com.elab.backstage</groupId>
<artifactId>elab-backstage-client</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
SpringServerApplication
@EnableBackstageData
以上功能开启。
以Zuul网关为例 : ZuulDataFilter
该类会在启动的时候注入到SpringMVC中,作为数据拦截器。
拦截器的负责收集的数据内容:
这部分的数据是统一收集的,但最终会经过BaseMessageData传输到服务端。
这里就涉及到传输的数据定位是否符合你的要求,如果不符合?
可以通过客户端自己实现ParamsGenerate
接口,自己去组装好内部数据。
实现ParamsGenerate
接口
参考案例:
@Component
public class DefaultParamsGenerate implements ParamsGenerate {
@Override
public void postBusinessData(BaseMessageData baseMessageData) {
Map<String, String> header = baseMessageData.getHeader();
String elabEnvironment = header.get("elabenvironment");
String elabProjectName = header.get("elabprojectname");
String elabSystem = header.get("elabsystem");
baseMessageData.setUserSystem(elabSystem);
baseMessageData.setFrontProjectName(elabProjectName);
baseMessageData.setUserDevice(elabEnvironment);
String baseUrl = baseMessageData.getUrl();
baseUrl = baseUrl.replace("//", "/");
String serviceName = baseUrl.split("/")[1];
String url = baseUrl.substring(baseUrl.indexOf(serviceName) + serviceName.length(), baseUrl.length());
baseMessageData.setServiceName(serviceName);
baseMessageData.setMsgId(header.get("_catrootmessageid"));
baseMessageData.setUserIp(header.get("x-forwarded-for"));
baseMessageData.setUrl(url);
}
}
比如有一些消息编号、设备号、以及用户编号等等这些信息可能需要客户端自己去获取放入该传输类中。
实现思路:
BaseMessageData
中TcpSocketSender
进行传输TcpSocketSender
传输器传输的值必须继承BaseMessage
,要指定MsgTypeEnums
类型。
服务端会根据该类型找对应的处理器。
<dependency>
<groupId>io.reactivex</groupId>
<artifactId>rxnetty</artifactId>
<version>0.4.20</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<artifactId>netty-common</artifactId>
<groupId>io.netty</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.elab.marketing</groupId>
<artifactId>elab-marketing-core</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<artifactId>rxnetty</artifactId>
<groupId>io.reactivex</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.5.Final</version>
</dependency>