请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为啥不用push模式,队列收到消息后直接消费,保存到mongodb,然后前端首页在onShow里发请求取最新的数据

正在回答

1回答

MongoDB中保存的数据是持久的,而MQ中的消息我可以设置过期时间。如果用户长期不登录系统,MQ会把过期消息销毁。如果按照你的做法,用户即便是僵尸用户,他的消息我们长期持久化到MongoDB里面合适吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 lpb_ #1
    那可不可以使用websocket,把消费动作放到客户端呢,当与该用户客户端建立websocket长连接后,对应的队列里的消息才会被消费,而在线用户是直接消费的。这样离线用户长时间不登陆,该用户对应的队列里的消息没有消费者就过期了。客户端消费消息后,再发送请求持久化消息。
    回复 有任何疑惑可以回复我~ 2022-12-14 11:22:36
  • 神思者 回复 提问者 lpb_ #2
    移动端你能用WebSocket方案?用户走几步手机没信号了,WebSocket能维持住长连接吗?
    回复 有任何疑惑可以回复我~ 2022-12-14 12:11:42
  • 提问者 lpb_ 回复 神思者 #3
    我主要考虑的是轮询对服务器的压力。那老师,针对移动平台网络波动大的问题,MQTT协议是不是一个很好的选择呢?我搜索的结果是移动端使用它做消息推送的挺多的。
    
    此外,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议。其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息。据Cmstop主要负责消息推送的高级研发工程师李文凯称,随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。
    回复 有任何疑惑可以回复我~ 2022-12-14 13:09:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信