I. Introdução
No trabalho, na verdade, um monte de pessoas estão muito preocupados com a mensagem, muitas vezes algumas horas para ver uma mensagem. Então, precisamos enviar uma notificação de mensagem instantânea para o usuário. Com pregos e com mais e mais empresas, em seguida, enviar uma mensagem para o prego também é uma boa escolha!
Em segundo lugar, os shows de código
1, primeiro configure o nosso unhas bot:
2, a Microservice-monitor-server -> DingDingMessageUtil.java
empacotar com.microservice.minitor.notifier; importação com.alibaba.fastjson.JSONObject; importação java.io.InputStream; importação java.io.OutputStream; importação java.net.HttpURLConnection; importação java.net.URL; público classe DingDingMessageUtil { pública estática Cordas access_token = "钉钉token" ; público estático vazio (String msg) sendTextMessage { try { Mensagem mensagem = nova mensagem (); message.setMsgtype ( "texto" ); message.setText ( novo MessageInfo (msg)); URL url = new URL ( "https://oapi.dingtalk.com/robot/send?access_token=" + access_token); // 建立http连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection (); conn.setDoOutput ( verdadeiro ); conn.setDoInput ( verdadeiro ); conn.setUseCaches ( falso ); conn.setRequestMethod ( "post" ); conn.setRequestProperty ( "Charset", "UTF-8" ); conn.setRequestProperty ( "Content-Type", "aplicação / Json; charset = UTF-8" ); conn.connect (); OutputStream fora = conn.getOutputStream (); Corda TextMessage = JSONObject.toJSONString (mensagem); byte [] Dados = textMessage.getBytes (); out.write (dados); out.flush (); out.close (); InputStream em = conn.getInputStream (); byte [] = dados1 novo byte [in.available ()]; in.read (dados 1); System.out.println ( new String (dados1)); }prendedor (exceção e) { e.printStackTrace (); } } } Classe mensagem { privada msgtype String; privado texto MessageInfo; pública de Cordas getMsgtype () { return msgtype; } Pública vazio setMsgtype (msgtype String) { este .msgtype = msgtype; } Pública MessageInfo getText () { return texto; } Pública .text =vazio setText (text MessageInfo) { este texto; } } Class MessageInfo { private conteúdo String; pública MessageInfo (conteúdo String) { este .content = conteúdo; } Pública getContent String () { return conteúdo; } Pública vazio setContent (conteúdo String) { este .content = conteúdo; } }
2, a Microservice-monitor-server -> DingDingNotifier.java
Pacote com.microservice.minitor.notifier; importação java.util.HashMap; importação java.util.Map; importação com.alibaba.fastjson.JSONObject; importação org.springframework.context.expression.MapAccessor; importação org.springframework.expression.Expression; importação org.springframework.expression.ParserContext; importação org.springframework.expression.spel.standard.SpelExpressionParser; importação org.springframework.expression.spel.support.StandardEvaluationContext; importação org.springframework.http.HttpEntity; importação org.springframework.http.HttpHeaders; importaçõesorg.springframework.http.MediaType; importação org.springframework.web.client.RestTemplate; importação de.codecentric.boot.admin.server.domain.entities.Instance; importação de.codecentric.boot.admin.server.domain.entities.InstanceRepository; importação de.codecentric.boot.admin.server.domain.events.InstanceEvent; importação de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier; importação reactor.core.publisher.Mono; público classe DingDingNotifier estende AbstractStatusChangeNotifier { pública DingDingNotifier (repositório InstanceRepository) { super (repositório); } @Override protegido Mono <Vazio> doNotify (evento InstanceEvent, instância Instância) { Cadeia serviceName = instance.getRegistration () getName (.); Corda ServiceURL = instance.getRegistration () getServiceUrl ().; Estado corda = instance.getStatusInfo () getStatus ().; Mapa <String, Object> detalhes = instance.getStatusInfo () getDetails (.); StringBuilder str = novo StringBuilder (); str.append ( "监控报警: 【" + serviceName + "】" ); str.append ( "【服务地址】" +ServiceURL); str.append ( "【状态】" + status); str.append ( "【详情】" + JSONObject.toJSONString (detalhes)); retorno Mono.fromRunnable (() -> { DingDingMessageUtil.sendTextMessage (str.toString ()); }); } }
3, a Microservice-monitor-server -> MinitorServerApplication.java
empacotar com.microservice.minitor; importação com.microservice.minitor.notifier.DingDingNotifier; importação de.codecentric.boot.admin.server.config.EnableAdminServer; importação de.codecentric.boot.admin.server.domain.entities.InstanceRepository; importação org.springframework.boot.SpringApplication; importação org.springframework.boot.autoconfigure.SpringBootApplication; importação org.springframework.context.annotation.Bean; @SpringBootApplication @EnableAdminServer pública classe MinitorServerApplication { @Bean públicaDingDingNotifier dingDingNotifier (InstanceRepository repositório) { retornar novo DingDingNotifier (repositório); } Público estáticos vazios principais (String [] args) { SpringApplication.run (. MinitorServerApplication classe , args); } }
Em terceiro lugar, execute o teste
Projeto começar:
PC:
telefone: