目前在开发 IM 系统,用了 NGINX 来做反向代理,服务端用的是 spring boot,使用了融云的 IM 服务。融云提供了设置消息回调的地址,即,当客户端发出消息的时候,融云这边把消息回调到填写的地址中,但是有个问题是,融云的回调消息只有在超时的情况下才会重发,而不是根据返回的 HTTP 状态码来重发,相当于如果服务正在重启或者宕机的话,不会触发融云的重发机制,因为宕机的时候在融云那边系统看来不算超时。所以有可能会出现丢消息的隐患。
之前想过单独部署机器来专门处理消息回调,虽然处理消息回调的稳定性提高了,但似乎也还是会有丢消息隐患的。
想请问下大家这种情况下该如何避免丢消息?
谢谢。
1
catror 2021-01-14 15:51:57 +08:00 via Android
我觉得你应该去找他们的客服,修改机制。
|
2
p23XnFNH1Wq953rV 2021-01-14 15:58:19 +08:00
发消息时记录, 回调时记录, 脚本检测两者数目有差异时, 进行处理
|
3
shanghai1943 OP @catror #1 也在提工单和他们沟通中。然而他们对于这种需求估计会有漫长的流程吧,熬不起。。
|
4
shanghai1943 OP @derrick1 #2 相当于需要客户端配合处理才行。耗费了一定的成本了。当初选择第三方就是希望能省力的。
|
5
catror 2021-01-14 18:20:16 +08:00 via Android
@shanghai1943 临时解决可以跑一个单独的消息服务,不要做反代。消息服务收到回掉后,先把消息存下来,再返回响应。
|