问题描述
我是响应式编程的新手,我正在尝试学习 Spring WebFlux、Reactive Streaming 等。我仍在尝试理解我无法在脑海中收集碎片的概念。
客户端可以通过 SSE(服务器端事件)或 WebSocket 连接到我的后端服务。 (无法决定)
客户端可以发送事件数据,我想实时处理事件。我想将业务逻辑与事件一起使用。如果我的业务逻辑工作正常,我想通知相关连接的客户端并向他们发送数据。
示例:
Client1:发送带有用户 ID、城市、年龄的事件
Client2:发送带有用户 ID、城市、年龄的事件
我的业务逻辑有效,我注意到他们在同一个年龄范围和同一个城市,我想通知他们,可能有很多客户端,但只有 client1 和 client2 匹配..所以我能够将数据发送到相关连接的客户端。当客户端的事件相互触发时,应该有一个事件驱动的系统。 (如果它不是事件驱动的系统,我应该检查它们是否应该匹配,就像客户端在某个时间间隔内要求某些东西我不想因为它耗尽服务器..)
所以我的问题是:我可以使用反应式编程来做到这一点吗?如果我的业务逻辑有效,发送相关连接的客户端匹配事件!这样,其他连接的客户端不会受到影响。
我在互联网上查看并发现:Tailable Cursor With WebFlux.
我能够在 MongoDB 中保存事件,MongoDB 使用相关过滤器连续返回数据。如果插入了任何新文档,它会通过 Flux 通知。但我不知道这是否是一个好习惯,因为与 MongoDB 的连接将保持打开状态。
还有一个问题:如果我的应用程序扩展到 4-5 个实例,它应该相互通信并正确匹配!在我的示例中,client1 和 client2 应该连接到我的应用程序的同一个实例。否则,他们无法匹配,对吧?我认为,如果我在反应式编程中使用 Sink,它就存在于内存中。因此,每个应用程序都将负责连接客户端并发布自己的订阅者,这会导致错误或丢失匹配。
可以使用 Reactive Redis 或 Reactive Apache Kafka..?? Redis 保持在线用户,Kafka 使用密钥获取实例内的事件..比如获取 cityId 和订单是有保证的..我真的需要吗?
反应式微服务实际上被认为是事件驱动的解决方案吗?难道它们只是提高传统请求-响应系统性能的一种方式吗?
不久,我想通过查看用户的事件来通知相关连接的客户端,当彼此之间应用匹配时!使用可扩展的应用程序系统做到这一点..
我的头脑很混乱,任何帮助将不胜感激。谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)