摘要:如果消息隊(duì)列必須用數(shù)據(jù)庫表來實(shí)現(xiàn),那么就要注意表當(dāng)中一定要有流水號字段,類型最好是數(shù)字,排序方便插入記錄時(shí),流水號必須是唯一且遞增的。每次輪詢?nèi)〉较⒑?,取最后一條記錄的流水號,從表中刪除所有小于等于該流水號的記錄。
如果消息隊(duì)列必須用數(shù)據(jù)庫表來實(shí)現(xiàn),那么就要注意:
表當(dāng)中一定要有流水號字段,類型最好是數(shù)字,排序方便;
插入記錄時(shí),流水號必須是唯一且遞增的。
取記錄的方式是定時(shí)輪詢。不要一次把所有記錄取出來,而是按流水號排序,取前若干條記錄。輪詢?nèi)∮涗浀乃俣纫欢ㄒ^生成記錄的平均速度,否則消息永遠(yuǎn)都處理不完了。
所以為了留出一定的余地,不要在輪詢線程中去處理消息,而是在輪詢線程中將取到的消息丟給另外的線程池去處理。
每次輪詢?nèi)〉较⒑?,取最后一條記錄的流水號,從表中刪除所有小于等于該流水號的記錄。
輪詢必須只有一個(gè)線程來做。多個(gè)線程/進(jìn)程同時(shí)去查,可能會查出重復(fù)的記錄。
所以為什么說最好還是要用消息隊(duì)列,因?yàn)橄㈥?duì)列可以任意多個(gè)消費(fèi)者去取。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/17589.html
摘要:是基于鏈接節(jié)點(diǎn)的線程安全的隊(duì)列。通過這些高效并且線程安全的隊(duì)列類,為我們快速搭建高質(zhì)量的多線程程序帶來極大的便利。隊(duì)列內(nèi)部僅允許容納一個(gè)元素。該隊(duì)列的頭部是延遲期滿后保存時(shí)間最長的元素。 隊(duì)列簡述 Queue: 基本上,一個(gè)隊(duì)列就是一個(gè)先入先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)Queue接口與List、Set同一級別,都是繼承了Collection接口。LinkedList實(shí)現(xiàn)了Deque接 口。...
摘要:隊(duì)列是遵行先進(jìn)先出原則的一組有序的項(xiàng)。優(yōu)先隊(duì)列是默認(rèn)隊(duì)列的變種,它的元素的添加和移除是基于優(yōu)先級的。如此循環(huán),直至隊(duì)列的長度等于,返回勝者行。同時(shí),還掌握了很著名的優(yōu)先隊(duì)列循環(huán)隊(duì)列這兩種結(jié)構(gòu)。 《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法》讀書筆記。 隊(duì)列是遵行FIFO(First In First Out, 先進(jìn)先出)原則的一組有序的項(xiàng)。隊(duì)列再尾部添加新元素,并從頂部移除元素。 在現(xiàn)實(shí)中...
閱讀 2160·2021-09-22 15:54
閱讀 1900·2021-09-04 16:40
閱讀 925·2019-08-30 15:56
閱讀 2686·2019-08-30 15:44
閱讀 2214·2019-08-30 13:52
閱讀 1179·2019-08-29 16:35
閱讀 3402·2019-08-29 16:31
閱讀 2624·2019-08-29 13:48