redis stream 實現生產者消費者模式

2021-10-23 17:30:24 字數 1938 閱讀 8862

@test

public void producer() throws interruptedexception

}@test

public void consumer1() throws interruptedexception

list>> msg = jedis.xreadgroup(groupname, consumername, count, 0, true, index);

if (msg == null)else );

});}}}

@test

public void earlistmodel() throws interruptedexception catch (exception e)finally

hashmapmap = new hashmap<>();

// map.put(msgkey, streamentryid.unreceived_entry);

map.put(msgkey, new streamentryid("0-0"));

map.entryidentry = map.entryset().iterator().next();

//ack變成true消費記錄會無法儲存問題

list>> msg = jedis.xreadgroup(groupname, consumername, 0, 0, false, identry);

if (msg == null || msg.get(0).getvalue().size() == 0)else

}/**

* latest:只讀取最新訊息

* group 建立topic用 $ 忽略歷史訊息只讀取最新的訊息

* read >

* xreadgroup

*/@test

public void latestmodel() throws interruptedexception catch (exception e)

hashmapmap = new hashmap<>();

map.put(msgkey, null);

map.entryidentry = map.entryset().iterator().next();

while (true)else }}

/*** breakpoint:斷點 讀取未讀取過的訊息

* 這種情況必須producer時候就建立group 0-0

* read > :第一次會讀取未消費過的資料

*/@test

public void breakpointmodel() throws interruptedexception catch (exception e)

hashmapmap = new hashmap<>();

map.put(msgkey, streamentryid.unreceived_entry);

map.entryidentry = map.entryset().iterator().next();

while (true)else }}

/*** breakpoint:斷點 讀取未讀取過的訊息

* 這種情況必須producer時候就建立group 0-0

* read > :第一次會讀取未消費過的資料

*/@test

public void breakpointmodel() throws interruptedexception catch (exception e)

hashmapmap = new hashmap<>();

map.put(msgkey, streamentryid.unreceived_entry);

map.entryidentry = map.entryset().iterator().next();

while (true)else

}}

redis stream中pending資料的處理

在消費者組模式下,當乙個訊息被消費者取出,為了解決組內訊息讀取但處理期間消費者崩潰帶來的訊息丟失問題,stream 設計了 pending 列表,用於記錄讀 xreadgroup 取但並未處理完畢 未ack 的訊息。下面的討論基於幾點 面向的場景為多個無差別消費者 每個消費者名子相同,功能相同 在同...

邊生產邊消費實現

如何實現邊生產邊消費 首先定義乙個生產和消費的類,建立乙個生產函式,建立乙個消費函式。定義乙個容器用於裝載生產出來的產品,這裡我用乙個陣列當做乙個容器。定義乙個變數用於標識產品的個數。使用synchronized同步,使生產與消費的方法同時執行。定乙個消費執行緒b類,用於消費。定義乙個生產線程a類,...

規則引擎實現生產排程系統

生產排程系統是製造企業 系統的重要組成部分,對應於生產管理系統的短期計畫安排,主要目標是通過良好的作業加工排序,最大限度減少生產過程中的準備時間,優化某一項或幾項生產目標,為生產計畫的執行和控制提供指導。在不同的問題環境中,生產排程的優化目標也不同。在生產製造企業中影響生產排程的因素很多 比如裝置 ...