Danfo Yam

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            5 Posts :: 1 Stories :: 6 Comments :: 0 Trackbacks

              前段時間做了一個項目,從儀器上采集數據(儀器會源源不斷的發送數據)并將數據pushweb browser上,由于要保證能夠離線操作,采用在客戶端電腦上部署一個嵌入小jetty服務器的方案,因此不能夠安裝AMQ來實現push的功能(AMQ太大),同時要保證儀器采集的數據不會丟失,導致不能使用jetty continuations(丟失數據頻繁)

          首先來看段js代碼:

          function ajaxHandler(){
              
          if (request.readyState == 4{  // If the request is finished
                  try{
                      
          if (request.status == 200){  // If it was successful
                          document.getElementById("time_div").innerHTML = request.responseText;
                          sendRequest();
                      }

                      
          else{  
                          
          //time
                          setTimeout("sendRequest()",5000);
                      }

                  }
          catch(e){
                      setTimeout(
          "sendRequest()",5000);
                  }

              }

          }

              此時的常連接實際是個虛假的長連接,是以反復的與servlet建立連接并讀取數據而實現的。而這種方式,當servlet端正源源不斷的往browser段傳輸數據時,browser會有一部分時間消耗在建立連接、處理數據、關閉連接的過程中,因此導致servlet傳輸的數據會丟失.

              因此做了一個Comet Queue組件,能夠實現以下目標:
              1.    代碼少,建立在spring

              2.   
          對于每個http session創建一個獨立的session, 這些session有自己的生命管理周期,當長時間沒有服務請求這些session時,會自動被注銷.

              3.   
          數據產生者發送數據給訂閱者,保證每個請求都能拿到自己會話中的數據,而不會丟失。
          這樣一個小功能,適合在對comet傳輸的數據要求準確性較高的要求中使用,他可以針對每一個http session創建一個session,將session保存在池中。一方面,數據產生者產生數據時,往池中的每個session添加數據;另一方面,數據消費者從自己的session中取出數據。這樣就保證了數據不會丟失。

          架構藍圖如下圖所示:



          暫時先將Comet Queue的代碼與jar上傳,文檔將逐漸補齊.

          所需jar文件
          源代碼
          posted on 2009-06-30 16:39 Danfo Yam 閱讀(1571) 評論(3)  編輯  收藏

          Feedback

          # re: 發布CometQueue 2009-06-30 20:11 過河卒
          關注這個東西,最近也在考慮這樣的功能.  回復  更多評論
            

          # re: 發布CometQueue[未登錄] 2009-06-30 23:13 zy
          代碼倒是看懂了!期待博主把做這個組件的原因,以及相關介紹再說詳細點!  回復  更多評論
            

          # re: 發布CometQueue 2009-07-01 13:28 找個美女做老婆
          Java高手群:Java樂園,群號:28840096 Java樂園網站:http://www.javaly.cn 歡迎Java高手加入,大家一起交流經驗,相互學習,共同進步  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 雷波县| 英山县| 丹阳市| 普定县| 搜索| 壤塘县| 静安区| 喀喇沁旗| 连江县| 青神县| 丽江市| 图木舒克市| 财经| 新津县| 彩票| 石家庄市| 依兰县| 孝昌县| 万州区| 小金县| 项城市| 独山县| 阳江市| 梁山县| 淄博市| 玉环县| 加查县| 江门市| 桦甸市| 建水县| 南靖县| 和硕县| 新宁县| 稷山县| 济阳县| 和林格尔县| 大冶市| 宜兴市| 丹寨县| 凤翔县| 新晃|