簡體   English   中英

在使用 Spring Boot 和 STOMP 時,有沒有辦法讓隊列不刪除消息?

[英]When using Spring Boot and STOMP, is there a way to make queues not delete messages?

我有一個應用程序在后端使用 Java,在前端使用 Angular,我試圖在兩者之間使用 STOMP 消息交換 state 數據。

我想做的是讓我的服務在啟動時發布它們的狀態並將該數據保留在隊列中以供以后連接到服務器的任何客戶端使用。

(編輯)

為了澄清起見,我並不是說我希望消息在服務器重新啟動后仍然存在。 我想要的是某些消息隊列保留所有消息,直到服務器重新啟動。

如何告訴 Spring Boot 的 STOMP 實現不要刪除 /queue 的內容?

您可以將ActiveMQ Artemis配置為“外部代理”並使用“非破壞性”隊列 當 STOMP 客戶端接收並確認來自非破壞性隊列的消息時,代理不會將其刪除。 您可以定義一個特殊的“初始化”隊列,所有客戶端最初都連接到該隊列以接收您關心的 state 數據,然后他們可以連接到完成正常工作所需的任何其他隊列。

在這種用例中,隊列通常配置為非破壞性“最后一個值”隊列 這樣,每個客戶端都可以使用自己的“最后一個值”,並且可以使他們的 state 數據保持最新,而不會在隊列中出現陳舊的 state 數據的復雜性。

我意識到您的問題是詢問如何使用 Spring 的內置代理執行此操作,但我所有的研究表明 Spring 的簡單內存中代理既不支持最后值隊列語義,也不支持非破壞性隊列語義,甚至不支持持久消息。 據我了解,Spring 的代理僅適用於最基本的用例,這就是為什么要啟用與可以支持更高級用例(例如您的用例)的 3rd 方代理的集成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM