[英]How to maintain SseEmitters list between multiple instances of a microservice?
語言:Spring Boot、JS
概述:我正在我的應用程序中實現服務器發送的事件功能,該功能將部署在 cloud foundry 中,其中基於隊列中的新消息(我已在我的微服務中訂閱),我將向我的客戶端發送一些更新/瀏覽器(使用 EventSource)。 為此,我在服務器端維護一個 SseEmitters 列表(用於維護所有活動的 SseEmitter)。 一旦我從隊列中收到一條新消息,我就會根據 id(隊列消息中的一個字段)將消息發送給相應的客戶端。
問題:當我通過創建應用程序的多個實例來擴展我的應用程序時,上述場景將如何工作。 由於只有一個實例會收到新的隊列消息,因此可能會發生在該特定實例中未維護活動 SseEmitter的情況,我該如何解決?
為了解決這個問題,可以觀察到以下方法。
如果您考慮一下,知道您的用戶(SSE Emitter)在哪里,就像知道某個網站在哪里一樣。 您可以使用 DNS-look-alike 協議來確定您的用戶所在的位置。 協議如下:
如果您使用消息傳遞中間件在微服務之間進行通信,則可以使用 AMQP 協議提供的路由功能。 協議如下:
綁定在像 RabbitMQ 這樣的現代 AMQP 代理上不是資源密集型的。
您的問題很老,如果您現在還沒有弄清楚,希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.