我正在設計一個相當複雜的系統,並想知道在netty處理程序中放置jms使用者(activemq,vm協議,非persitent)的最佳方法是什麼。Netty處理程序中的JMS消費者?
讓我解釋一下,我有幾個客戶端使用websockets連接到我的netty服務器。對於每個客戶端連接,我都會創建一個jms使用者,用於在一個或多個主題上偵聽有趣的消息。如果一條有趣的消息到達,我需要做一個額外的步驟(額外的過濾),然後使用websocket將消息發送到客戶端。
是的一個很好的辦法做到這一點:
- 一個SimpleChannelInboundHandler裏面我宣佈一個民辦非靜態消費者
- 消費者在channelActive初始化
- 消費者在channelInactive 破壞
- 當消費者接收到消息時,我做額外的過濾器a使用ctx.channel()發送它。()
在這種設置中,我有點擔心消費者可能會變成慢消費者,並放慢一切,導致WebSocket通過互聯網。
我想出了一個更復雜的解耦「消費者接收消息」和「通過websocket發送消息」。
- 一個SimpleChannelInboundHandler裏面我宣佈一個民辦非靜態消費者
- 消費者在channelActive初始化
- 當由消費者我把它放在一個blockedqueue接收消息的消費者在channelInactive
- 破壞
- 每分鐘我讓一個線程(爲每個客戶端創建)查找隊列並使用ctx.channel()。write()將找到的消息發送到客戶端。
在這一點上,我有點擔心每個客戶端的額外線程。
或者是否有更好的方法來完成這項任務?
謝謝你對這個問題的想法,我很欣賞它,你給了我很多想法。 – TinusSky