java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

在监控的过程中,我们除了监控一些服务性能情况,还有一些服务的存活也需要监控,这时候,我们就可以用到java自带的url操作类,完成,整体思路是通过一个请求的状态码判断某请求,是否存在,达到监控的目的,为了更可靠,我们重复请求五次,都失败再警告,现在我们一起来实现它。

1,HTTP状态码:

1开头(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。
2开头(成功)
3开头(重定向)
4开头(请求错误)
5开头(服务器错误)
百度百科
网络资料

2,工具类:

package com.el.<a href="http://www.cfei.net/archives/tag/rabbitmq" title="浏览关于“rabbitmq”的文章" target="_blank" class="tag_link">rabbitmq</a>.supervise.common.rabbitmq;

import java.net.Http<a href="http://www.cfei.net/archives/tag/url" title="浏览关于“URL”的文章" target="_blank" class="tag_link">URL</a>Connection;
import java.net.URL;

/**
 * Created by Administrator on 2016/3/22.
 */
public class URLUtils {
    /**
     * 功能:检测当前URL是否可连接或是否有效,
     * 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
     * @param urlStr 指定URL网络地址
     * @return URL
     */
    public static Boolean isConnect(String urlStr) {
        if(urlStr==null||urlStr.isEmpty()){
            return false;
        }
        Boolean isConnected = false;
        int counts = 0;
        URL url=null;
        while (counts &lt; 5) {
            try {
                url = new URL(urlStr);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                int state = con.getResponseCode();
                if (state == 200) {
                    isConnected=true;
                }
                break;
            }catch (Exception ex) {
                counts++;
                isConnected=false;
                continue;
            }
        }
        return isConnected;
    }
}

这样,就和上篇博客的服务检测方法能够合上了:

@Override  
    public Boolean checkOneService(ControlService controlService) throws Exception {  
        if(controlService == null ){  
            return false;  
        }  
        boolean isFinish=false;  
        if(URLUtils.isConnect(controlService.getServiceUrl())){  
            isFinish=true;  
        }else{  
            isFinish = sendWarningOneservice(controlService);  
            isFinish=false;  
        }  
        return isFinish;  
    }

总结

简单的方法,简单的方式,有时候能够起到不容忽视的作用,我们有时候,复杂的问题,高大上的问题不能解决,没有头绪,恰恰是这种简单,我们还不够,或者说原始积累还不足,我们不但要高屋建瓴,也要深入进去,深入到最简单,最底层,再来看你的问题,是不是觉得,解决方法不止一个了!这就是人们常说的经验!
RabbitMQ大数据用户体验urljava

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。