ActiveMQ關於檔案傳輸需要注意哪些方面?

2021-08-31 12:49:41 字數 1285 閱讀 8436

最近一直在關注一些檔案傳輸中介軟體的實現,想用activemq實現一些具體的功能。經過幾周的activemq的學習,以及中介軟體必須一些功能。發現一些問題自己還是不能搞懂,希望網上一些,大牛拍一下磚,支援一下。

1.在訊息中介軟體的訊息的路由的演算法怎麼實現的。

如a、b、c、d、e 五個節點上都是提供訊息服務的 amq ,五個節點連通成乙個網路,連線到 a 節點的客戶端可以發訊息到五個節點中的任意乙個節點,amq 會自動尋找一條最佳路徑傳遞訊息到目標節點。如從a 發訊息到d,有兩條連通路徑:a->b->c->d 和a->e->d,其中 a->e->d 經過的節點最少,該路徑為最佳路徑, amq 將根據此路徑對訊息進行傳遞。

2.在訊息中介軟體中訊息的儲存最好採用哪種,各自的優缺點是什麼,商用的訊息中介軟體採用推薦採用哪種訊息儲存?

目前訊息的儲存有基於檔案系統,基於記憶體,基於資料庫的。

基於檔案系統:

以檔案方式儲存訊息,配置非常簡單並具有較高的效能,但是可靠性比較差。在可靠性要求不高但對效能要求很高的環境下可以使用這種訊息儲存方式。

基於資料庫:

使用關聯式資料庫儲存訊息。對可靠性要求很高的應用環境下建議使用這種訊息儲存方式。jdbc訊息儲存方式的缺點是配置較複雜。

基於記憶體:

將訊息儲存在記憶體中,可靠性比較差,效能比較高,當訊息生產者快速生產和訊息訊息者消費慢時候,訊息堆積造成對記憶體占用嚴重,造成宕機等,當重新啟動時候,記憶體的尚未訊息的訊息消失,不可靠。

3. 超大檔案的檔案傳輸斷點續傳

1.基於單佇列實現,訊息生產者產生訊息傳送給客戶端然後處於訊息等待狀態,客戶段接受訊息成功之後,傳送訊息給訊息生產者,訊息生產者再開始傳送訊息給訊息的消費者直到整個檔案傳送成功,然後訊息客戶端將訊息合併成乙個檔案。

2.基於多執行緒的實現,在傳送訊息時候,訊息生產者建立多個執行緒,分別傳送訊息客戶端,客戶端接受訊息並簽收,如果客戶端接受失敗(備註這裡失敗,僅指訊息沒有簽收),傳送訊息給訊息生產者乙個特定佇列傳送訊息請求重新繼續傳送。

4.提供可擴充套件的訊息中間實現便於訊息中介軟體的替換。

如目前採用activemq實現,以後可以替換為其他的訊息中介軟體,如hornetq等。

5.針對各種訊息服務和訊息相關的監控(brige,connection,queue)的狀態和數量的實時監控等。

主要採用jmx實現底層的監控功能。針對activemq提供jmx的mbean可以直接實現。

6.針對目前訊息中介軟體在某些情況下,比較消耗記憶體,必須監控實時監控流量。

具體實現思路沒有想出來,針對,activemq可以使用sysusage,storeuage等,但是其他的mq,但是針對其他的mq怎麼將空。

關於檔案傳輸

最近專案經常使用到檔案傳輸ftp url訪問等方式,查閱了些資料做了些整理和新增並不完善,希望能對大家有所幫助。1.ftp檔案傳輸原始碼 1.1採用runtime.getruntime exec 執行作業系統的ftp命令 1.1.1 ftp上傳指令碼 windows指令碼 open 目標ip 使用者...

VC檔案傳輸

vc 檔案傳輸的實現 2008 07 20 20 33 要實現檔案傳輸最簡單的辦法是寫兩個執行緒,乙個伺服器段的傳送處理執行緒,乙個客戶端的接收處理執行緒。執行緒處理函式需要宣告為類的靜態成員,由於不可訪問類內部的資料成員,所以引數傳遞裡面最好有個類的指標 伺服器段的傳送處理執行緒 cfiletra...

簡單檔案傳輸

原理 檔案傳輸的原理其實很簡單,服務端先在某個埠監聽,等待客戶端的連線,連線成功後,服務端開啟指定的檔案,然後讀取檔案,再通過建立的套接字傳送給客戶端。如果要實現乙個服務端能與多個客戶端連線,則需要用到多執行緒,下面給出一對一的實現 有興趣的朋友可以用多執行緒實現一對多。程式 include inc...