我的問題是關於在IBM MQ中使用單個隊列的一對多消息流。我是MQ新手。IBM MQ - 一對多消息流
場景 - 假設有多個進程從一個隊列中讀取數據,當他們從隊列中讀取一條消息時,所有進程都會得到相同的消息。
ie - 假設隊列上沒有消息,並且有兩個讀取器被阻塞(在其上執行MQGET)。
1條消息進入隊列(邏輯上意味着進程1)。他們兩人是否都會等待(在其上執行MQGET)或者只是隨機地向一個進程發送消息。
一旦消息被讀取,它將從隊列中刪除。
如果消息在讀取後從隊列中被刪除,假設進程1正在處理,並且有新消息出現,並且進程2獲取它並被刪除。當進程1試圖得到它不會得到任何消息。這可能嗎。
基本上,我想知道如何管理單個隊列上的多個進程,以便消息進入正確的過程並且不會丟失任何消息。
感謝搶劫 - 清除了很多東西。只是爲了100%確保我使用兩種類別的選擇器。過程1的Cat1和過程2的過程2使用選擇器進行讀取,然後有效地執行此過程,就好像有兩個隊列 - 一個使用cat1消息,另一個使用cat2消息。我對嗎? – user1735718
另外 - 有沒有辦法強制應用程序只使用選擇器讀取隊列?謝謝。 – user1735718
是的,在Cat1和Cat2上選擇的兩個應用程序實例將選擇不同的消息子集。但是,如果有任何消息不符合任一選擇標準,則這些消息將保留在隊列中。在這種情況下,您最好使用兩個隊列和FIFO讀取或使用出版物。 QMgr或隊列上沒有設置來強制執行特定類型的讀取。 QMgr提供運輸服務。最佳實踐是業務需求在應用程序中實現,而不是在傳輸的配置設置中實現。 –