<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zxbyhcsdn

     

    一個監控程序,調用短信接口的實現.

    一個監控程序,調用短信接口的實現.

        最近接受了一個燙手的山芋頭.是公司的給一個客戶做的CRM系統中的一個訂單處理模塊,這個模塊當時考慮并發和訪問量比較大所以套用SOA的思想,把訂單處理模塊單獨成一個服務.
    部署在專門的機器上并做了負載均衡,提供接口給其他模塊調用. 由于本人專注數據庫方面和計費結算等架構方面.所以那個訂單處理模塊的設計開發我沒有參加. 系統測試和試運行的時候都一切正常.
    但是上線不久,就出問題了. 那個訂單處理模塊老是掛掉.經檢查發現那個服務運行一段時間(半天或者一天總之說不清楚)就使得那個服務器的cpu占用100%.直接over, 然后重新殺掉那個模塊的jboss服務,啟動一下jboss,又可以堅持一天半天.
    檢查數據庫一切正常,估計是在程序里面有邏輯出現bug,時間長了吧cpu的資源耗盡了. 更讓人要跳樓的是做那個模塊的幾個哥們兒 跳槽了. 悲劇啊!!!!(人生就好比一個大茶幾,上面擺滿了杯具!!).
        咋辦捏,系統在運行已經有不少的用戶和數據,不可能系統停止讓我們檢查原因,然后再上線,估計這樣說,Boss要吧我殺了...,看來在這個bug解決之前. 唯一的辦法就是,監控這個程序,如果掛掉,馬上重啟服務.但不可能幾頁子一天到黑守到起
    想到了一個可能的辦法,就是寫一個監控程序,如果發現那個服務掛掉,馬上重啟服務.但是試驗只有,發現也走不通,服務掛的時候,是cpu100%沒法相應了,這時候那個監控程序一并搞死在那兒...
    然后又想到吧那個監控程序部署到另一個服務器上,但是在另一個服務器上沒法去重啟訂單處理模塊的服務.最后想如果發現服務掛了能通過短信通知維護人員也可以.維護人員可以通過手機上網遠程桌面進入那服務器,去重啟jboss.這樣就不用大家都守到哪兒了.
        于是馬上到網上搜如何通過程序給手機發短信的東東.
        首先搜到短信modem. 看到一哥們兒的blog里面寫的文章http://hi.baidu.com/surelybox/blog/item/0404371bf8066afdae513360.html,說要去買一個短信modem的設備,然后再根據它提供的sdk包進行開發.
    我暈死,這么個事情還要買個modem,而且那哥們兒說的用起來中間還有很多問題.不好解決,具體的情況 如果大家有興趣可以看看他的blog.
        我在想.那些電信運營商其實提供一個webserive或者http的接口出來,然后我調用一下這個接口不是就可以吧短信發出去了么.咋個搞的這么麻煩捏.真是奇怪,于是放棄該死的短信modem的想法,又繼續在網上搜短線接口.
    搜出來,出現很多 xxx科技提供短信接口.看了幾個差不多都是短信群發的東東,提供一個群發的系統,然后讓用戶可以去是設置號碼和短信內容,再給用戶發送.但是我需要的是短信的api接口,這些又不太適合我.
    繼續搜索,看有沒有.
        正在折騰中,同事喊吃飯了,想到先把飯吃完多,再說.畢竟身體是革命的本錢! 吃飯回來,有點犯困,順便到cnbeta上去逛逛. 看到了一篇文章:中國電信將推出“能力開放平臺”http://www.cnbeta.com/articles/99098.htm
    奇怪能力開放是個什玩意兒,于是繼續看,開始寫了什么"國家重大專項課題,該項目由王曉初掛帥".哇,投入還大喲. 再往下看,有如下一句話:
     "通俗的講,就是電信將一些核心的 資源如短信、IVR、語音通話、位置服務等功能通過該平臺向普通的開發者開放,開發者可以根據自己的產品需求快捷申請和調用這些功能."
    喲呵,這個短信不是我真需要的么,而且是想普通開發者開放,我的監控程序正好需要這個東東啊!!先進去看看,http://open.ctfactory.com.然后里面發現了一個短信的鏈接.
    http://open.ctfactory.com/Portal/Supermarket/FuncDetail.aspx?funcID=10000033然后再點進去.前面的注冊賬號這些都不看了,里面關鍵的兩個步驟:
    第四步: 調用能力開放平臺認證鑒權接口,獲得認證碼;
    第五步: 獲得認證碼以后,調用短信發送接口。

    基本明白了,其實就是首先用賬號去申請一個驗證碼,然后根據驗證碼調用短信接口. 哇咔咔,方便.
    馬上注冊了一個賬號,然后注冊成功后提示 "一元訂購能力",進入界面看到其中短信是一元錢訂購100次. my god 一分錢一次,電信這回真是大方了一回了.然后通過銀聯支付一塊錢,訂購了100次的短信.

        哈哈,短信的問題搞定了,接下來進行監控程序的編寫,其實就是用doNET寫了一個客戶端程序(這個部署在另外一個windows的機器上).代碼很簡單,啟一個線程,定時訪問接口,如果訪問不到了,就調用發短信的接口
    一下就是全部的代碼,通過注釋就可以看明白了. 為了趕時間,代碼寫的很不規范,望大家不要見笑喲

        public partial class Form1 : Form
        {
            //定義一個線程對象的變量,全局的
            Thread t;
            int interval=10;//間隔10秒

            delegate void delegate_getRet(string error);
            bool flag = true;
           
            //這些事doNET生成,不管他.
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
               
            }

            //在這個按鈕按下的時候,就啟動線程,每10秒執行方法getRet
            private void start_Click(object sender, EventArgs e)
            {
                this.label1.Text = "啟動時間:" + DateTime.Now.Hour + "時" + DateTime.Now.Minute + "分";
                start.Enabled = false;
                flag = true;

                //執行方法getRet
                t = new Thread(getRet);
                t.Start();
                
            }

            //關閉按鈕,就是停止線程的
            private void stop_Click(object sender, EventArgs e)
            {
                try
                {
                    flag = false;
                    t.Join();
                    t.Abort();
                }
                catch
                {
                }
                start.Enabled = true;
            }

            void getRet()
            {
                while (true)
                {
                    if (!flag) return;
                    try
                    {
                        //模擬一個http請求
                        WebRequest myRequest = null;
                        WebResponse myResponse = null;
                        //Stream resStream = null;
                        //StreamReader sr = null;
                        myRequest = WebRequest.Create("這兒是訂單模塊的接口,這兒就不便公開了!呵呵.如果要使用這個代碼,請改成你的URL地址");
                        myResponse = myRequest.GetResponse();
                      
                    }
                    catch (Exception ex)
                    {
                        //發一個短信,發短信的功能,封裝在這個方法里面,在方法里面決定接受者的電話號碼和短信內容.
                        this.sendMsg("杯具啊!!又掛了!!趕快重啟...");
                    }
                    finally
                    {
                        Thread.Sleep(interval * 1000);
                    }
                }
            }


    以上是程序的主體結構,下面是發送短信的方法的代碼. 可能中途有寫問題,但是邏輯都是一樣的,代碼在我的本本上,現在我寫這個文章的時候又是在家里的臺式機上寫的
    如果有什么問題,可以看open.ctfactory.com 里面有詳細的開發文檔和客服服務.

    private sendMsg(string msgContent)
    {
        //1.調用能力管控認證鑒權接口,獲取Token,這個是一個webservice接口,
          // Authenticator = Base64(SHA1 (TimeStamp + “$” + APID+ “$” + APUserAccount + “$” + FunID + “$” + APKEY))
          // 以下介紹在http://open.ctfactory.com/Portal/Supermarket/FuncDetail.aspx?funcID=10000033#KSSS 都能看到

        //下面的設置分別是授權接口的URL和能力調用接口的URL,以及用戶ID和能力ID以及Key.
        string AuthInterfaceURL = ConfigurationManager.AppSettings["AuthInterfaceURL"];
        string FuncInterfaceURL = ConfigurationManager.AppSettings["FuncInterfaceURL"];
        string APID = ConfigurationManager.AppSettings["APID"];
        string APKey = ConfigurationManager.AppSettings["APKey"];
        string FuncID = ConfigurationManager.AppSettings["FuncID"];
        string APUserID = ConfigurationManager.AppSettings["APUserID"];     

           // AMCPForAP這個東東是用doNET將授權接口的webservice生成的本地代理
            string authResult = AMCPForAP.Auth(AuthInterfaceURL, APID, FuncID, APUserID, APKey);//AMCPForAP這兒是我通過doNET自動生成的webservice代理
            string[] authResults = authResult.Split('$');

            int result = Int32.Parse(authResults[0]);

          2.獲取驗證碼發送消息
           if (result == 0)
            {
      //生成請求字符串
      string sendMsgRequest = "http://118.123.249.4/ims/ghsendim.php?SendMsgRequest=" + token + "$" + 這兒是要發送短信的電話號碼 + "$" + PSOCryptography.ConvertStringToBase64String(msgContent).Replace("+", "%2B").Replace("&", "%26") + "$" + "";

      //發送短信.這兒的短信發送接口是一個REST接口,需要模擬一個http請求來發送
                    WebRequest myRequest = WebRequest.Create(sendMsgRequest);
                    WebResponse myResponse = myRequest.GetResponse();

      resStream = myResponse.GetResponseStream();
                    string content = new StreamReader(resStream, System.Text.Encoding.UTF8).ReadToEnd();

      if (content.IndexOf("200")>0)
      {
          //記錄日志,發送成功
          ............
      }
      else
      {
          //記錄日志,發送失敗.
          ............
      }
            }

    }

     

    posted on 2009-12-05 16:22 zxbyh 閱讀(3212) 評論(7)  編輯  收藏

    評論

    # re: 一個監控程序,調用短信接口的實現. 2009-12-05 21:04 codigg

    呵呵,好~~~~~~  回復  更多評論   

    # re: 一個監控程序,調用短信接口的實現. 2009-12-06 00:14 fcuandy

    先頂再看  回復  更多評論   

    # re: 一個監控程序,調用短信接口的實現. 2009-12-07 13:10 HiMagic!

    帥鍋,我看到的怎么是10元100次  回復  更多評論   

    # re: 一個監控程序,調用短信接口的實現. 2009-12-07 13:20 HiMagic!

    原來是注冊后的體驗價,謝了  回復  更多評論   

    # re: 一個監控程序,調用短信接口的實現. 2009-12-07 20:16 zbh

    不得啦!!
    那個一元體驗,是1元可以用100次短信.

    其實這個還蠻有用的,記的剛畢業那會兒,給一個出租車公司做軟件.
    那個老板提出一個需求.就是他們有很多出租車司機,有時候要給他們打電話通知事情的時候,麻煩得很.希望能不能在系統上點一哈,就自動撥通出租車司機的電話.
    當時覺得沒法實現.現在看了這個能力開放的東東. 發現實現這個需求還是很簡單的.但是那時候還沒有這個能力開放平臺.  回復  更多評論   

    # re: 一個監控程序,調用短信接口的實現. 2009-12-08 12:35 anlaneg@qq.com

    呵呵,我不知道以下方法能不能解決樓主的辦法,如果樓主要發信息的人員使用中國移動,可以使用飛信,現在網上飛信接口還不少,只要一天發送量不超過2000條(好像是這個數目)就沒問題.不地話說會來,樓主的方法真的是治標不治本!  回復  更多評論   

    # re: 一個監控程序,調用短信接口的實現. 2009-12-09 23:29 ttee

    樓主說的是,由于別人留下的代碼一時半回沒法搞清楚,要解決這個問題還需要時間,
    所以暫時用這個辦法來頂一哈!  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲免费在线视频| 无码专区AAAAAA免费视频| 午夜性色一区二区三区免费不卡视频 | 成年人在线免费观看| 看成年女人免费午夜视频| 午夜成人免费视频| 国产日韩久久免费影院 | 亚洲乱码国产一区三区| 免费看国产成年无码AV片| 337P日本欧洲亚洲大胆艺术图| 久久久亚洲欧洲日产国码二区 | 亚洲国产V高清在线观看| 日本高清免费观看| 亚洲w码欧洲s码免费| 久久成人免费播放网站| 日韩在线视频播放免费视频完整版 | 国产美女a做受大片免费| 日本免费大黄在线观看| 久久www免费人成看国产片| 亚洲精品国产第一综合99久久| 亚洲色四在线视频观看| 亚洲精品字幕在线观看| 亚洲国产精品一区二区久久hs| 亚洲国产精品综合久久网络| 国产高清视频在线免费观看| 成全视频免费高清| 午夜a级成人免费毛片| 午夜免费福利影院| 波多野结衣免费视频观看| 亚洲精品动漫人成3d在线| 亚洲美女在线国产| 亚洲AV无码国产在丝袜线观看| 国产亚洲福利精品一区| 亚洲最大的视频网站| 亚洲精品无码专区在线播放| 黄色免费在线网址| 日韩免费在线视频| 午夜视频免费成人| 亚洲中文久久精品无码| 91亚洲视频在线观看| 亚洲成AV人片在WWW|