通道重連設計

2021-07-10 02:49:01 字數 1424 閱讀 9011

在現今的客戶端和服務端端的網路互動流程中,已經實現了通道重連的功能。但目前各客戶端針對重連的實現細節並不完全統一,而在某些使用場景下,也沒有達到當初設計通道重連機制的需求。因此需要重新設計整理實現方案,保證各平台的統一和功能的完備。

我們需要實現以下需求:

以下說明的網路請求,未經特殊說明的,都指經過通道傳輸的網路請求,包括但不限於:

由於產品的網路請求大多為非同步請求,存在併發訪問ewp的情況。那麼很可能出現這種場景:

請求a發現通道超時,請求ewp伺服器重連通道;

在a重連通道請求尚未返回時,出現併發請求b;

請求b發現通道超時,也請求ewp伺服器重連通道。

這樣就造成冗餘重連通道的現象發生。

為此規定,當某個網路請求開啟通道重連請求時,後續觸發的網路請求必須等待此通道重鏈結束后,方可繼續執行後續操作。若通道重連成功,等待的網路請求繼續發出;若通道重連失敗,取消所有等待的網路請求。

/** 通道超時時間,非0情況下,當前時間大於此時間時,通道超時重連 */

private

static

long mrehandshaketime = 0l;

/** 伺服器返回超時時間 */

private

static

long minterval = 0l;

/** 通道是否重連的標記 */

private

static string mrehandshake = "false";

/** 通道重連是否成功的的標記 */

private

static string mrehandshakesuccess = "true";

/** 1.4 通道是否為密文傳輸 預設true */

private

boolean misencryptedtrans = true;

/** 存放cryptohttpmanager的佇列 */

private

static arraylistmlist = new arraylist();

/** 標記是否取消後續請求。 */

public

boolean mcancel = false;

/** 是否重連的標記 */

private

boolean misrehandshake = false;

if(!misrehandshake)

}//取消後續請求返回null

mysql重連次數 MySQL 重連機制

usr bin env python coding utf 8 importsys,mysqldb,tracebackimporttimeclassmysql def init self,host user passwd db port 3306,charset utf8 self.host hos...

WebSphere MQ 訊息佇列遠端通道連線

傳送機器 建立佇列管理器 建立傳輸佇列 觸發 觸發器資料 在第三步的通道建立好之後修改這個值為第三步建立的通道名稱 建立傳送方通道 需要填連線名稱 172.16.21.113 1414 傳輸佇列 第二步建立的佇列名稱 建立遠端佇列 需要填三個引數,接收方的佇列名稱,接收方的佇列管理器名稱,第二步建立...

websocket 斷線重連

摘要websocket reconnect websocket是html5發布之後出現的一種新技術,說它是新技術,其實也不是多新的技術了,因為畢竟也有2 3年了,但是找了很多國內的例項,缺發現不多,不知道是它不好用呢,還是說這種技術原來就有缺陷呢,咱們暫且不說,今天我們就來介紹一下websocket...