spring - 如何为集群 MQTT 代理设置负载均衡器
问题描述
我正在开发一个实时移动消息应用程序的项目,该应用程序需要根据消息内容和用户的余额进行高级消息过滤,这意味着如果用户失去平衡或者他发送的内容违反了政策消息必须被阻止。
出于这个原因,我需要实现一些负载平衡解决方案来扫描已发布的消息,并且还可以根据上述规则确定是否应该阻止消息,因此我无法实现基本代理,因为我需要对每条消息应用特殊规则。
困难的部分: 移动应用程序需要接收订阅消息(也是连接确认),而不是最好通过负载均衡器(请参阅我的下一点)。
问题是我可以将订阅消息转发到移动应用程序的唯一方法是在负载均衡器中处理连接和订阅,这是灾难性的。我需要连接是透明的并且负载均衡器是无状态的。
我怎样才能做到这一点?(如果对我当前的设计有任何帮助的话,我目前的设计涉及带有用于负载平衡的 Spring Boot 和 VerneMQ 作为消息代理的 Java 组件)
解决方案
尝试
移动应用 --> MQTT Broker --> 消息扫描/区块算法 --> MQTT Broker --> 订阅者。
您的移动应用程序应该具有在第一条消息后应用程序失去平衡时停止消息的智能。
所以 MQTT Broker 不应该直接在它的层将消息发送给它的订阅者。它应该发送处理后收到的消息。
不确定是否有人对此流程有现成的解决方案。但可行。
推荐阅读
- python - 运行 for 循环时,ResultSet 对象没有属性“find”
- javascript - Node.js & Express - 错误和成功模式一起出现在错误情况下
- c# - EF Core 字符串包含字符串数组
- javascript - 简化检查数组匹配的函数
- android - 使用 Retrofit 的 Web 服务响应延迟了大约 10 秒
- npm - 没有存储库字段
- azure - Azure KeyVault 服务问题
- c# - 我无法从 Gridview 中的数据库中删除数据
- infinispan - Windows Server 2019 上的 Infinispan 错误 (DescriptorParserException)
- webhooks - AWS codecommit - 对 PR 事件采取行动