我的應用程序使用Spring + RabbitMQ。它已經設計了兩個功能,顯示用戶&他的朋友的帖子在主頁&通知功能發生的任何事件。爲應用程序中用戶創建的每個主題創建一個新隊列
對於這兩個功能,我在綁定到交換的rabbitmq配置中預定義了隊列。底層模式是發佈訂閱。
現在我對第三個功能的設計感到困惑。說一個用戶創建一個 一個話題說「萬聖節」& n用戶訂閱它。類似地,n個用戶將創建他們的n個主題&其他用戶將訂閱它以進行更新。這也是一個pubsub模式。
我相信每個單獨的主題都應該創建一個新的隊列。那麼,如何動態地爲應用程序中的用戶創建的每個主題創建一個隊列?或者還有其他方法可以解決這個問題?
下面是應用程序的現有隊列配置。
<!-- Creates a queue for consumers to retrieve messages -->
<rabbit:queue name="UserPostpublishQueue" durable="true"/>
<!-- queue for sending notifications to users -->
<rabbit:queue name="notificationQueue" durable="true"/>
<!-- Fanout exchange for a pubsub bound to UserPostpublishQueue -->
<fanout-exchange name="broadcastPosts" durable="true" xmlns="http://www.springframework.org/schema/rabbit">
<bindings>
<binding queue="UserPostpublishQueue"/>
</bindings>
</fanout-exchange>
<!-- Direct exchange for a broadcasting notifications -->
<rabbit:direct-exchange name="broadcastNotifications" durable="true" xmlns="http://www.springframework.org/schema/rabbit">
<bindings>
<binding queue="notificationQueue" key="notifications"/>
</bindings>
</rabbit:direct-exchange>
所以,德里克如果我們只保存在數據庫中的一切就不是穿上分貝額外負載,而不是輪詢隊列應用程序將輪詢數據庫添加任何新的數據。我明白隊列不是數據庫。如何將數據存入數據庫併爲最新數據設置一個通用隊列或集中隊列,如果有新帖子,它肯定會推送給用戶,而無需輪詢數據庫。我們可以隨時清除隊列中的舊數據。 – underdog