场景是,想在app中增加个私信功能,可以实时收到,应该是还有离线消息保存功能.
目前计划是使用第三方功能, 以防万一研究下其他处理方法.
mqtt 服务端:
moquette : java写的基于netty,netty基于nio
mosquitto : c写的,也开源的,不过c我不熟悉.看网上的测试,性能这个是最好的.
activemq: apache基金会的项目,有个web后台会便于查看.网上测试说普通消息性能没别家高.而且吃内存比较厉害.
我们应用用户不会同时在线那么多,用起来哪家都差不多, 用mosquitto就行.
自定义消息
自己写个消息体也行,3个分割方式,消息定长,消息头定,固定分割符. 然后基于netty处理下.性能应该也没问题.
离线消息
qos协议本身是支持离线数据的,客户端需要设置 clientId ,client开启的时候不清除session.
这样消息没法通过别的程序获得,没法集中管理.有个low点的办法是,所有消息都发给服务器client,服务器client根据内容进行分发. 客户端client收到消息的时候给服务端发送一个回执消息. 服务器收到回调后删除.这样的话服务端也相当于一个client,消息量加一倍.