I. 서론
일할 때, 사실, 많은 사람들이 매우 메시지가 표시하는 메시지에 대해 종종 몇 시간을 우려하고있다. 그래서 우리는 사용자에게 인스턴트 메시지 알림을 보내야합니다. 손톱으로 점점 더 많은 기업과 다음 손톱에 메시지를 보내도 좋은 선택입니다!
둘째, 코드 쇼
1, 먼저 우리의 손톱 봇을 설정 :
2, microservice 모니터 서버 -> DingDingMessageUtil.java
패키지 com.microservice.minitor.notifier을; 수입 com.alibaba.fastjson.JSONObject; 수입 java.io.InputStream를; 수입 java.io.OutputStream에; 수입 java.net.HttpURLConnection; 수입 의 java.net.URL; 공공 클래스 DingDingMessageUtil { 공공 정적 문자열 access_token은 = "钉钉토큰" ; 공공 정적 무효 sendTextMessage (문자열 MSG) { 시도 { 메시지 메시지 = 새로운 메시지 (); (message.setMsgtype "텍스트" ); message.setText ( 새 하여 messageInfo (MSG)); URL URL = 새 URL ( "https://oapi.dingtalk.com/robot/send?access_token="+ access_token이); // 建立HTTP连接 HttpURLConnection의 CONN = (HttpURLConnection의) url.openConnection (); conn.setDoOutput ( 사실 ); conn.setDoInput ( 사실 ); conn.setUseCaches ( 거짓 ); conn.setRequestMethod ( "POST" ); conn.setRequestProperty ( "문자셋", "UTF-8" ); conn.setRequestProperty ( "Content-Type을", "응용 프로그램 / JSON; 문자셋 = UTF-8" ); () conn.connect; 아웃의 OutputStream = conn.getOutputStream (); 문자열 끝난 TextMessage = JSONObject.toJSONString (메시지); 바이트 [] 데이터 = textMessage.getBytes (); out.write (데이터); () out.flush; out.close (); 에서의 InputStream = conn.getInputStream (); 바이트 [] = DATA1는 새로운 바이트 [in.available ()]; in.read (DATA1); 에서 System.out.println ( 새 문자열 (DATA1)); }캐치 (예외 전자) { e.printStackTrace (); } } } 클래스 메시지 { 개인 문자열 MSGTYPE; 민간 하여 messageInfo 텍스트; 공공 문자열 getMsgtype () { 반환 MSGTYPE; } 공공 공극 setMsgtype (문자열 MSGTYPE) { 이 .msgtype = MSGTYPE; } 공공 하여 messageInfo gettext에 () { 반환 텍스트; } 공공 무효 의 setText (하여 messageInfo 텍스트) { 이 는 .text =본문; } } 클래스 하여 messageInfo { 개인 문자열 내용; 공공 하여 messageInfo (문자열의 내용) { 이 .content = 내용; } 공공 문자열의 getContent () { 반환 내용; } 공공 무효 의 setContent (문자열의 내용) { 이 .content = 내용; } }
2, microservice 모니터 서버 -> DingDingNotifier.java
패키지 com.microservice.minitor.notifier; 수입 java.util.HashMap에; 수입 java.util.Map; 수입 com.alibaba.fastjson.JSONObject; 수입 org.springframework.context.expression.MapAccessor; 수입 org.springframework.expression.Expression; 수입 org.springframework.expression.ParserContext; 수입 org.springframework.expression.spel.standard.SpelExpressionParser; 수입 org.springframework.expression.spel.support.StandardEvaluationContext; 수입 org.springframework.http.HttpEntity; 수입 org.springframework.http.HttpHeaders; 수입org.springframework.http.MediaType; 수입 org.springframework.web.client.RestTemplate; 수입 de.codecentric.boot.admin.server.domain.entities.Instance; 수입 de.codecentric.boot.admin.server.domain.entities.InstanceRepository; 수입 de.codecentric.boot.admin.server.domain.events.InstanceEvent; 수입 de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier; 수입 reactor.core.publisher.Mono; 공공 클래스 DingDingNotifier는 확장 AbstractStatusChangeNotifier { 공공 DingDingNotifier (InstanceRepository 저장소) { 슈퍼 (저장소); } @Override는 보호 모노 <보이드> doNotify (InstanceEvent 이벤트, 예 인스턴스) { 문자열 서비스 명 = instance.getRegistration ()를 getName ().; 문자열 것은 serviceUrl는 = . instance.getRegistration () getServiceUrl를 (); 문자열 상태 = . instance.getStatusInfo ()의 getStatus를 (); 지도 <문자열, 개체> 세부 사항 = instance.getStatusInfo () getDetails ().; StringBuilder의 STR = 새 의 StringBuilder (); str.append ( "监控报警: 【"+ 서비스 명 + "】" ); str.append ( "【服务地址】"+것은 serviceUrl); str.append ( "【状态】"+ 상태); str.append ( "【详情】"+ JSONObject.toJSONString (세부 사항)); 창 Mono.fromRunnable (() -> { DingDingMessageUtil.sendTextMessage (str.toString ()); }); } }
3, microservice 모니터 서버 -> MinitorServerApplication.java
패키지 com.microservice.minitor을; 수입 com.microservice.minitor.notifier.DingDingNotifier; 수입 de.codecentric.boot.admin.server.config.EnableAdminServer; 수입 de.codecentric.boot.admin.server.domain.entities.InstanceRepository; 수입 org.springframework.boot.SpringApplication; 수입 org.springframework.boot.autoconfigure.SpringBootApplication; 수입 org.springframework.context.annotation.Bean; @SpringBootApplication @EnableAdminServer 공공 클래스 MinitorServerApplication { @Bean 공개DingDingNotifier dingDingNotifier (InstanceRepository 저장소) { 반환 새 DingDingNotifier (저장소); } 공공 정적 무효 메인 (문자열 []에 args) { SpringApplication.run (. MinitorServerApplication 클래스 , 인수); } }
셋째, 테스트를 실행
프로젝트 시작 :
PC :
전화 :