摘要:如果消息隊列必須用數據庫表來實現,那么就要注意表當中一定要有流水號字段,類型最好是數字,排序方便插入記錄時,流水號必須是唯一且遞增的。每次輪詢取到消息后,取最后一條記錄的流水號,從表中刪除所有小于等于該流水號的記錄。
如果消息隊列必須用數據庫表來實現,那么就要注意:
表當中一定要有流水號字段,類型最好是數字,排序方便;
插入記錄時,流水號必須是唯一且遞增的。
取記錄的方式是定時輪詢。不要一次把所有記錄取出來,而是按流水號排序,取前若干條記錄。輪詢取記錄的速度一定要超過生成記錄的平均速度,否則消息永遠都處理不完了。
所以為了留出一定的余地,不要在輪詢線程中去處理消息,而是在輪詢線程中將取到的消息丟給另外的線程池去處理。
每次輪詢取到消息后,取最后一條記錄的流水號,從表中刪除所有小于等于該流水號的記錄。
輪詢必須只有一個線程來做。多個線程/進程同時去查,可能會查出重復的記錄。
所以為什么說最好還是要用消息隊列,因為消息隊列可以任意多個消費者去取。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17589.html
摘要:隊列是遵行先進先出原則的一組有序的項。優先隊列是默認隊列的變種,它的元素的添加和移除是基于優先級的。如此循環,直至隊列的長度等于,返回勝者行。同時,還掌握了很著名的優先隊列循環隊列這兩種結構。 《學習JavaScript數據結構與算法》讀書筆記。 隊列是遵行FIFO(First In First Out, 先進先出)原則的一組有序的項。隊列再尾部添加新元素,并從頂部移除元素。 在現實中...
閱讀 2070·2021-09-22 15:54
閱讀 1834·2021-09-04 16:40
閱讀 861·2019-08-30 15:56
閱讀 2628·2019-08-30 15:44
閱讀 2153·2019-08-30 13:52
閱讀 1125·2019-08-29 16:35
閱讀 3344·2019-08-29 16:31
閱讀 2567·2019-08-29 13:48