마이크로 서비스 : 봄 부팅 관리자의 통합 - 손톱 경고

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 :

 

전화 :

 

 

추천

출처www.cnblogs.com/yansg/p/12589675.html