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 閱讀(1572) 評論(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高手加入,大家一起交流經驗,相互學習,共同進步  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 什邡市| 蓬安县| 维西| 集安市| 新昌县| 大化| 中方县| 陇西县| 陈巴尔虎旗| 墨脱县| 南通市| 新余市| 金山区| 安吉县| 平陆县| 北安市| 外汇| 亚东县| 嘉黎县| 揭阳市| 高淳县| 无极县| 罗定市| 嵊州市| 科尔| 宝兴县| 新蔡县| 新巴尔虎左旗| 沂源县| 农安县| 咸阳市| 襄垣县| 高州市| 长武县| 阿鲁科尔沁旗| 恩施市| 双流县| 仪陇县| 山丹县| 邢台市| 印江|