当消息生产者生产消息的能力远远大于消息的消费者的消费能力时,程序会发生什么事?
例如我这里有组桥接的生产者,每30秒会发布3700万条消息,而消费者就是一个简单的客户端,处理这3700万条消息,消费者会发生什么事?
//我知道消费者的缓冲队列会爆满溢出,导致内存泄露
怎么解决?
认证高级PHP讲师
首先,這個不叫記憶體洩漏。叫法有點不嚴謹
對可靠性要求不高可以考慮隨機丟掉一些
擴充硬體
對可靠性有要求的話。簡單來說就是先丟到硬碟or資料庫裡,總而言之不能放記憶體裡了。有點像Java中的Socket 實例都有一個 InputStream 和 OutputStream分別會維護一個SendQ佇列和RecvQ佇列,不過它是在記憶體中,我們放到了硬碟中而已。
不是有個RejectedExecutionHandler嗎?
RejectedExecutionHandler
都記憶體洩漏了還不死機啊。 RejectedExecutionHandler對拒絕的任務進行處理,要不看看用redis,哈哈
首先,這個不叫記憶體洩漏。叫法有點不嚴謹
對可靠性要求不高可以考慮隨機丟掉一些
擴充硬體
對可靠性有要求的話。簡單來說就是先丟到硬碟or資料庫裡,總而言之不能放記憶體裡了。有點像Java中的Socket 實例都有一個 InputStream 和 OutputStream分別會維護一個SendQ佇列和RecvQ佇列,不過它是在記憶體中,我們放到了硬碟中而已。
不是有個
RejectedExecutionHandler
嗎?都記憶體洩漏了還不死機啊。 RejectedExecutionHandler對拒絕的任務進行處理,要不看看用redis,哈哈