是否有可能以編程方式創建/拆除Spring集成渠道,而不是在Spring配置中靜態聲明它們?春季集成 - 以編程方式創建/拆除渠道
我的情況是這樣的:
我有需要推送通知web應用程序,所以我用長輪詢。這些長輪詢呼叫需要在服務器上阻塞,直到他們得到一個事件。
我在設想的(當然是開放的選擇),它是一個Spring集成隊列通道,用於每個會話,每個會話都監聽單個pubsub頻道。所以,當一個服務器事件發生時,它將被髮布到pubsub,然後它將被傳送到單個會話隊列,並在那裏被彈出併發送到正在輪詢的客戶端。
爲了做到這一點,創建會話時,我必須在pubsub頻道上註冊新的隊列頻道列表。當會話被銷燬時,新的隊列也將被銷燬。
是這樣的可能嗎?
我不想讓會話直接監聽pubsub,因爲存在丟失郵件的風險,所以我希望在兩者之間有一個隊列來緩衝它們。
感謝, 羅伊
輝煌。對於需要幫助的其他人,我已經爲代碼示例創建了一個要點:https://gist.github.com/roytruelove/7589536 –
對此的另一個警告 - 如果有人試圖發佈信息,渠道必須至少有一個訂閱者給它的消息。由於我們正在動態創建訂閱,因此可能會發生給定頻道尚未訂閱訂閱者的情況。爲了解決這個問題,您需要使用(至少)NullChannel訂閱pubsub頻道。 –
點對點'SubscribableChannel'(例如'DirectChannel')不能有零個訂閱者,但是與JMS主題一樣,PubSub頻道可以具有零個訂閱者,並且該消息剛被刪除。這可以使用'minSubscribers'屬性進行修改,但默認值爲零。該行爲可以通過DEBUG日誌進行檢查。 –