Android 主动MQ安全性和可伸缩性

Android 主动MQ安全性和可伸缩性,android,activemq,Android,Activemq,我目前已经安装了一个Android和iOS应用程序,将ActiveMQ MQTT用于我的消息中继。这一切都很好,但我有以下问题,如果有人能帮助我,我将不胜感激: 1) 据我所知,所有客户端都需要保持与MQ服务器的开放TCP连接(出于明显的原因)并订阅主题,当主题发布时,订阅的客户端会收到通知。如果客户端的数量达到数百万,则意味着有数百万个活动的开放TCP连接。如此多的服务器开放连接的后果是什么?有没有更好的方法来处理这种情况?您是否建议改为每隔一分钟左右连接一次,查询“世界状态”(即最新未读消息

我目前已经安装了一个Android和iOS应用程序,将ActiveMQ MQTT用于我的消息中继。这一切都很好,但我有以下问题,如果有人能帮助我,我将不胜感激:

1) 据我所知,所有客户端都需要保持与MQ服务器的开放TCP连接(出于明显的原因)并订阅主题,当主题发布时,订阅的客户端会收到通知。如果客户端的数量达到数百万,则意味着有数百万个活动的开放TCP连接。如此多的服务器开放连接的后果是什么?有没有更好的方法来处理这种情况?您是否建议改为每隔一分钟左右连接一次,查询“世界状态”(即最新未读消息)并断开客户端连接?还是我有点偏执,数百万个开放的TCP连接都没问题

2) 关于安全问题,我知道我可以使用SSL,这很好,但我仍然不知道如何防止第三方订阅所有主题(甚至单个主题)?据我所知,客户机需要连接到服务器并订阅主题,但什么会阻止第三方应用程序这样做呢?我如何防止这种情况发生,并确保只有我的应用程序的客户端才能连接和订阅他们自己的主题

非常感谢您的帮助

  • 如果重新连接,则需要确保客户端创建持久订阅。否则,您将错过在连接之间发布的任何内容。这也可能是一个可扩展性的问题,您需要考虑。有数百万的连接,你会考虑使用一个集群,或者某种支持负载平衡的拓扑,而不管你采取什么方法。不断地重新连接客户机可能会导致意外的开销,以及经纪人试图跟上即将发生的一切。您的决策很大一部分将基于您的硬件以及任何服务器
  • 这只会刮伤拓扑的表面,但是

    编辑:添加了信息,试图解决您对数百万个连接的担忧,我本想先添加这些连接

  • 您可以通过ActiveMQ中的身份验证插件设置基于角色的安全性。可以使用通配符为每个角色/组设置模式,以允许访问特定的主题树
  • 网站提供了良好的信息,可以回答您关于如何使用和如何使用的问题