尽管我们对LoadBalancing网络套接字有很多疑问,但我找不到能解决我特定情况的解决方案。
我将具有以下设计:
|=============|
-------------------| ActiveMQ |--------------------
| |=============| |
| |
|=============| |=============| |=============|
| MyApp_01 |------------| Database |------------| MyApp_02 |
|=============| |=============| |=============|
|
---------------------------
|
|=============|
|LoadBalancer |
|=============|
|
|
|=============|
| Client |
|=============|
我具有以下组成部分:
ActiveMQ
队列我的应用程序的两个实例都在同一队列上侦听。收到消息后,实例会将其从队列中删除,将其保存在数据库中,并通过websocket将其广播到连接到它的任何客户端。这两个实例都在侦听队列,因此它们中的任何一个都可以作为从队列中删除消息的实例,我对此没有任何控制权(我也不应该)。
例如,在上述情况下,当我们有一个连接到MyApp_02
的客户端并且MyApp_01
是获取并广播该消息的客户端时,就会出现问题。客户端将永远不会收到任何消息,因为它已连接到MyApp_02
。
在这种情况下我该怎么办?我应该找到一种从所有实例播放的方式吗?我该怎么做? Nginx或Microsoft Service Fabric上有什么可以帮助我的吗?
如果有关系,我在应用程序中使用.Net Core 2.2
和SignalR
。
预先感谢