隊列中有哪些功能哪些不能通過主題?隊列中有哪些功能無法通過主題實現?
2
A
回答
1
我碰到的主要要求是消費者無法在主題上競爭單一消息。例如,我有一位發佈呼叫中心活動的客戶。幾個系統訂閱這些事件。其中一個系統是具有多個實例運行的實際呼叫路由應用程序。如果每個實例訂閱,則該呼叫被路由到所有這些實例。但是,如果將消息放入隊列並且所有實例消耗掉相同的隊列,則只有一個消息會接收消息,並且調用將轉至該運算符。如果發佈應用程序從主題轉換爲隊列,則呼叫中心可以正常工作,但所有其他訂閱者應用程序都不會收到該消息。
該解決方案(在WebSphere MQ中實現)是爲該主題創建管理訂閱並將消息傳遞到所有應用程序實例使用的隊列。所以生產者應用仍然是發佈者,所有動態訂閱者仍然獲得消息的副本,呼叫中心應用實例競爭每個發佈消息的單個實例。
此外,您不能在主題上使用瀏覽語義,而您可以在隊列中使用瀏覽語義。通過主題,您可以指定選擇器來過濾返回的消息,但這只是關於它。使用隊列可以瀏覽,重置瀏覽指針,然後瀏覽更多。
如果您將消息放在隊列中,但沒有消息接收消息,則消息將保持排隊。如果您向某個主題發送消息,並且沒有活動的訂閱者或持久訂閱,則該消息將被丟棄。因此,隊列中的消息自然是持久的,而主題上的消息可能會或可能不會。
從純粹的JMS角度來看,隊列和主題都是目的地的實例,如果您不嘗試瀏覽,它們可以互換。應用程序可能不知道它打開的目標是一個隊列還是一個主題,除非它在運行時使用instanceOf()來查找。
相關問題
- 1. 哪些現有語言功能最難實現?爲什麼?
- 2. sharepoint中有哪些功能?
- 3. 通過圖靈機實現隊列
- 4. Java通過擴展LinkedList實現隊列
- 5. 無法通過功能
- 6. 無法通過argv功能
- 7. 現有的Joomla網站 - 如何實現移動主題+功能?
- 8. SQL的哪些實現具有PSM功能?
- 9. 通知隊列的實現
- 10. 如何實現具有排序功能的隊列式容器
- 11. C++實現通過繼承功能
- 12. jPlayer - 通過Javascript實現倒帶功能
- 13. JuMPArrays有哪些功能?
- 14. 「android.intent.category.MONKEY」有哪些功能?
- 15. 哪些功能更有效?
- 16. 意圖有哪些功能?
- 17. 主要功能包含哪些內容?
- 18. php5引入了哪些主要功能?
- 19. 如何才能實現只有堆棧實現的隊列?
- 20. 隊列實現
- 21. 這些AWK命令有哪些功能?
- 22. NodeJS - 無法實現異步功能
- 23. 「minitest/spec」中有哪些斷言功能?
- 24. ASP.Net 4.0中有哪些新功能?
- 25. .NET Framework 3.5中有哪些新功能?
- 26. 通過列表理解來實現複製功能
- 27. hrefs空列表通過JavaScript onclick功能實現分頁
- 28. 通過命令行腳本實現IDA python列表功能
- 29. core.async是否可以通過序列實現它的功能?
- 30. EXC_BAD_ACCESS的主要功能和無法通過類